[英]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.