如何使用 PHP 将 NULL 插入十进制类型列?
Posted
技术标签:
【中文标题】如何使用 PHP 将 NULL 插入十进制类型列?【英文标题】:How to insert NULL into decimal type column using PHP? 【发布时间】:2019-08-06 00:49:10 【问题描述】:我正在尝试将NULL
插入到名为price
的列中,该列的类型为Decimal
。
该列可以为空,默认为NULL
。我想插入NULL
,只有在 html 表单的“价格”输入中没有输入任何内容时。这是我的 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
被插入到数据库中。
当$price
是NULL
时,如何将NULL
插入price
?
【问题讨论】:
@EdBanga 谢谢。我查看了这个问题的答案,但我尝试声明$price = NULL
和 0.00
仍插入到数据库中。
使用 ('$item_name',NULLIF('$price', ''))");
@EdBangga 非常感谢。这适用于删除一个“)”。如果您将此作为答案发布,我将很乐意接受它作为解决方案。再次感谢。
【参考方案1】:
这是在价格列中插入 null 的方法。
$con->query("INSERT INTO items (item_name,price) VALUES ('$item_name',NULLIF('$price', ''))");
【讨论】:
【参考方案2】:首先停止使用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 中用于在变量为空时指定默认值。
【讨论】:
【参考方案3】:如果您希望默认值为 null,则必须使用空白,而不是 null。
一个例子:
例如:mysql_query("INSERT INTO number1,number2 VALUES(NULL,1)");
【讨论】:
以上是关于如何使用 PHP 将 NULL 插入十进制类型列?的主要内容,如果未能解决你的问题,请参考以下文章
无法将值 NULL 插入列 - 如何强制标识增加? [关闭]