不要在Mysqli Query中插入空值

时间:2017-02-21 09:27:54

标签: php mysqli

我的表单中有一个字段数组

<input type="text" class="form-control" name="event_title[]">

我收到所有数据并成功插入我的数据库

    $events = $_POST['event_title'];
    $totalEvents = sizeof($events);
    for($i = 0; $i < $totalEvents; $i++) {
      $event_title = $events[$i];
      $sql1 = "INSERT INTO event_title (event_id, event_title) 
            VALUES (
            '".$lastid."',
            '".$event_title."'
            )";
    $result1 = mysqli_query($conn,$sql1);

我的问题是如何防止在我的数据库中插入NULL值?

4 个答案:

答案 0 :(得分:0)

检查变量是否为空可以使用!=&#39;&#39;

  $events = $_POST['event_title'];
        $totalEvents = sizeof($events);
        for($i = 0; $i < $totalEvents; $i++) {
          $event_title = $events[$i];
          if($event_title!=''){
          $sql1 = "INSERT INTO event_title (event_id, event_title) 
                VALUES (
                '".$lastid."',
                '".$event_title."'
                )";
        $result1 = mysqli_query($conn,$sql1);
       }
    }

答案 1 :(得分:0)

您可以在创建或修改表格时创建NOT NULL约束。

如果您还没有创建表格:

CREATE TABLE authors(
  author_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  author_name VARCHAR(40) NOT NULL,
  bio VARCHAR(400) NULL
)

您可以将NOT NULL约束添加到您的列,以防止NULL值。

如果您已经创建了表,则可以修改:

ALTER TABLE table
ALTER COLUMN column NOT NULL;

答案 2 :(得分:0)

尝试

$totalEvents = sizeof($_POST['event_title']);
for ($i = 0; $i < $totalEvents; $i++) {
    $event_title = $events[$i];
    if (strlen($event_title) == 0) {
        continue;
    }

    $sql1 = "INSERT INTO event_title (event_id, event_title) 
    VALUES (
    '" . $lastid . "',
    '" . $event_title . "'
    )";
    $result1 = mysqli_query($conn, $sql1);

}

答案 3 :(得分:0)

首先,我将澄清一个常见的误解。

NULL并不意味着与FALSE相同,或者是空字符串或0.它是NULL。它本质上意味着“未知”。

一个NOT NULL字符串字段可以有一个空值但它不能有一个NULL值(即它可以知道是一个空字符串,但不能知道)

关于你的问题。如果在您尝试将任何内容插入数据库之前很久没有设置任何字段,则应该选择表单验证。

这里是伪代码的工作流程:

DO {

 GET form submission.

WHILE (form is not valid);

insert form values into database.

如果规则是您的表不允许NULL - 请检查这些列在验证过程中是否为空,如果不是则验证失败。