如何在mysqli准备语句中使用空格?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

在mysqli准备语句中,空被转换为‘’(在字符串的情况下)或0(在整数的情况下)。我想把它存储为空。有什么办法吗?

提问于
用户回答回答于

我知道这是一个旧线程,但是可以将一个真正的空值绑定到准备好的语句

事实上,你可以使用mysqli。_绑定_参数将空值传递给数据库。只需创建一个变量并将空值存储到变量(请参阅该变量的手册),并绑定该变量。反正对我也很管用。

因此,它必须是这样的:

<?php
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

    // person is some object you have defined earlier
    $name = $person->name();
    $age = $person->age();
    $nickname = ($person->nickname() != '') ? $person->nickname() : NULL;

    // prepare the statement
    $stmt = $mysqli->prepare("INSERT INTO Name, Age, Nickname VALUES (?, ?, ?)");

    $stmt->bind_param('sis', $name, $age, $nickname);
?>

这应该会在数据库中插入一个空值。

用户回答回答于

因为他们在绑定NULL时有问题WHERE声明中,解决方案是:

有一个MySQL零安全算子必须使用:

<=>

例子:

<?php
$price = NULL; // NOTE: no quotes - using php NULL
$stmt = $mysqli->prepare("SELECT id FROM product WHERE price <=> ?"); // Will select products where the price is null
$stmt->bind_param($price);
?>

扫码关注云+社区