簡體   English   中英

不要在Mysqli查詢中插入空值

[英]Do not insert null values in Mysqli Query

我的表單中有多個字段

<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值?

只需檢查變量是否為空可以使用!=''

  $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);
       }
    }

您可以在創建或修改表時創建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;

嘗試

$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);

}

首先,我將消除一個常見的誤解。

NULL的含義與FALSE相同,或者為空字符串或0。它為NULL。 從本質上講,它的意思是“未知”。

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

至於你的問題。 如果很久沒有設置任何字段,則表單驗證應該開始,直到您嘗試將任何內容插入數據庫。

這是偽代碼中的工作流程:

DO {

 GET form submission.

WHILE (form is not valid);

insert form values into database.

如果規則是您的表不允許使用NULL,請在驗證中檢查這些列是否不為null,如果不是,則使驗證失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM