我正在尝试将NULL
插入price
类型为Decimal
的列中。
该列可为空,默认值为NULL
。我只想在HTML表单的“价格”输入中未输入任何内容时插入NULL
。这是我的PHP代码:
$item_name = $con->real_escape_string($_POST['item_name']);
$price = $con->real_escape_string($_POST['price']);
$con->query("INSERT INTO items (item_name,price) VALUES ('$item_name','$price')");
使用上面的代码,当我将“价格”输入留空时,0.00
被插入到数据库中。
我非常确定,当“价格”输入字段留空时,$price
是NULL
,因为我尝试过:
if ($price == NULL) {
$price == 4;
}
和4.00
已插入数据库。
我也尝试过:
$con->query("INSERT INTO items (item_name,price) VALUES ('$item_name',NULL)");
和NULL
已插入数据库。
当NULL
为price
时如何将$price
插入NULL
?
答案 0 :(得分:1)
这是在价格列中插入空值的方法。
$con->query("INSERT INTO items (item_name,price) VALUES ('$item_name',NULLIF('$price', ''))");
答案 1 :(得分:1)
首先停止使用real_escape_string
。您应该改用准备好的语句。这将帮助您解决问题!
这是应该正确完成的方法:
$item_name = $_POST['item_name'];
$price = $_POST['price'] ?: null; // make the value null if it is empty
$stmt = $con->prepare("INSERT INTO items (item_name,price) VALUES (?,?)");
$stmt->bind_param('ss', $item_name, $price);
$stmt->execute();
如果变量为空,可以在PHP中使用 ?:
运算符指定默认值。
答案 2 :(得分:-2)
如果要将默认值设置为null,则必须使用空白而不是null。
一个例子:
例如:mysql_query(“ INSERT INTO number1,number2 VALUES(NULL,1)”);