【问题标题】:How to insert NULL into decimal type column using PHP?如何使用 PHP 将 NULL 插入十进制类型列?
【发布时间】: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 被插入到数据库中。

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

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

并且4.00 被插入到数据库中。

我也试过了:

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

并且NULL 被插入到数据库中。

$priceNULL 时,如何将NULL 插入price

【问题讨论】:

  • @EdBanga 谢谢。我查看了这个问题的答案,但我尝试声明 $price = NULL0.00 仍插入到数据库中。
  • 使用 ('$item_name',NULLIF('$price', ''))");
  • @EdBangga 非常感谢。这适用于删除一个“)”。如果您将此作为答案发布,我将很乐意接受它作为解决方案。再次感谢。

标签: php sql mysqli


【解决方案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)");

      【讨论】:

        猜你喜欢
        • 2018-03-02
        • 2022-01-22
        • 2016-11-05
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多