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> 
+1

发布数据是否包含您试图获取的数据?另外,不要转义值并将它们放入查询中(这可能还不安全,即使比不转义它更安全),您可以使用准备好的语句! – Jite

+0

'$ sql'输出为什么? – chris85

+0

是的,脚本工作正常,但你可以按没有提交输入提交,它会继续插入空白数据,我试图去做的是使查询失败,如果发布数据为空 –

当页面加载时,您的代码将自动插入到数据库中。

作为一种解决方法,您应该添加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按钮的名字是提交。

+0

这不会停止空数据字段。 – chris85

+0

是的,先生。非常感谢你。 –

+0

正如我上面提到的,当变量$ _POST ['title']和$ _POST ['title']为空时按下提交时,表单仍会插入 –