MYSQLI - 脚本不断插入空数据

时间:2016-05-15 17:12:10

标签: php mysql mysqli

我的插入脚本有问题。我似乎无法让我的脚本停止将空数据插入到mysql中。我尝试过使用!empty函数。但它仍然将其提交到数据库中。这是我的代码:

<?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 个答案:

答案 0 :(得分:1)

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

作为一种变通方法,您应该添加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按钮的名称已提交。