MYSQLI - 脚本不断插入空数据
我遇到了插入脚本的问题。我似乎无法让我的脚本停止向mysql中插入空数据。我试过使用!空功能。但它仍然提交到数据库中。以下是我的代码:MYSQLI - 脚本不断插入空数据
<?php
// Connect to MySQL
$mysqli = new mysqli('localhost', 'xxx', 'xxx', 'xxx');
if ($mysqli->connect_error) {
die('Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error);
}
if (!empty($_POST)) {
// Insert into posts
$sql = "INSERT INTO posts (title, postdata) VALUES ('{$mysqli->real_escape_string($_POST['title'])}', '{$mysqli->real_escape_string($_POST['data'])}')";
$insert = $mysqli->query($sql);
// Print response from MySQL
if ($insert) {
echo "Success! Row ID: {$mysqli->insert_id}";
} else {
die("Error: {$mysqli->errno} : {$mysqli->error}");
}
// Close our connection
$mysqli->close();
}
?>
<form action="" method="POST">
<br>
<br>
Title:
<br>
<input type="text" name="title">
<br>
<br>
Post:
<br>
<textarea name="data" id="data"></textarea>
<br>
<br>
<input type="submit" name="submit">
</form>
当页面加载时,您的代码将自动插入到数据库中。
作为一种解决方法,您应该添加if(isset($_POST['submit'])) {
,它只会在表单提交时插入到数据库中。
该代码还将检查$_POST['title']
是否为空,如果是,则显示错误。
if(isset($_POST['submit'])) {
if(empty($_POST['title'])) {
echo 'Please fill in the field.';
}else{
$sql = "INSERT INTO posts (title, postdata) VALUES ('{$mysqli-real_escape_string($_POST['title'])}', '{$mysqli-real_escape_string($_POST['data'])}')";
$insert = $mysqli->query($sql);
}
}
如你未能提供您form
,我猜的submit
按钮的名字是提交。
这不会停止空数据字段。 – chris85
是的,先生。非常感谢你。 –
正如我上面提到的,当变量$ _POST ['title']和$ _POST ['title']为空时按下提交时,表单仍会插入 –
发布数据是否包含您试图获取的数据?另外,不要转义值并将它们放入查询中(这可能还不安全,即使比不转义它更安全),您可以使用准备好的语句! – Jite
'$ sql'输出为什么? – chris85
是的,脚本工作正常,但你可以按没有提交输入提交,它会继续插入空白数据,我试图去做的是使查询失败,如果发布数据为空 –