我有一个脚本,用于将数据插入我的数据库。在HTML中我有多个文本框。如果数据输入到文本框中,则我的脚本正在运行INSERT语句。如果文本框中没有输入数据,我的脚本也会运行INSERT语句。
如果文本框中没有输入数据,脚本会在数据库中创建一个空行。我试图通过将列更改为NOT NULL来阻止此操作。
但似乎没有用。
是否有人知道原因以及如何解决?
修改1:
$sql1 = "SELECT * FROM product WHERE id='" . $id1 . "' AND user_id='" . $_SESSION['USER_ID'] . "'";
$result1 = $link->query($sql1);
if ($result1->num_rows > 0) {
$sql11 = "UPDATE product SET voorraad = quantity -" . $quantity . " WHERE user_id='" . $_SESSION['USER_ID'] . "' AND id='" . $id1 . "'";
if(mysqli_query($link, $sql11)){
echo '<p>product1 is updated</p><br />';
} else {
echo '<p>error</p>';
}
} else {
$query1 = "INSERT INTO product(user_id, name, price, tax) VALUES (?, ?, ?, ?)";
$stmt = $db->prepare($query1);
$exec1 = $stmt->execute(array($_SESSION['USER_ID'], $name1, $price1, $tax1));
if($exec1){
echo '<p>product1 is created</p>';
} else {
echo '<p>error</p>';
}
}
答案 0 :(得分:0)
您正在插入空字符串,并且空字符串不为NULL,以检查NULL错误:
INSERT INTO addresses
(street
,city
,state
,zip
)VALUES(NULL,NULL,NULL,NULL);
你会看到错误。 NOT NULL仅检查非NULL值。
要防止空字符串,您必须使用触发器,或者在执行INSERT查询之前对服务器端编程语言执行检查以将空字符串转换为NULL。 INSERT的示例触发器可能如下:(这只是一个示例)
创建TRIGGER avoid_empty 在插入地址之前 对于每一行 开始 IF street =&#39;&#39;然后设置street = NULL END IF; 结束;
答案 1 :(得分:-1)
如果变量不为null,则可以验证变量并执行查询。为空,否则写值为null,必须传递数据