如何使用PHP将NULL插入十进制类型列?

时间:2019-08-06 00:49:10

标签: php sql mysqli

我正在尝试将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被插入到数据库中。

我非常确定,当“价格”输入字段留空时,$priceNULL,因为我尝试过:

if ($price == NULL) {
  $price == 4;
}

4.00已插入数据库。

我也尝试过:

$con->query("INSERT INTO items (item_name,price) VALUES ('$item_name',NULL)");

NULL已插入数据库。

NULLprice时如何将$price插入NULL

3 个答案:

答案 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)”);