一尘不染

在mysqli准备好的语句中使用空值

mysql

在mysqli准备好的语句中,NULL变成’‘(对于字符串)或0(对于整数)。我想将其存储为真正的NULL。有什么办法吗?


阅读 185

收藏
2020-05-17

共1个答案

一尘不染

我知道这是一个旧线程,但是可以将真实的NULL值绑定到准备好的语句(请阅读this)。

实际上,您可以使用mysqli_bind_parameter将NULL值传递给数据库。只需创建一个变量并将NULL值(请参见手册页)存储到该变量并将其绑定即可。无论如何对我来说很棒。

因此,它必须类似于:

<?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值。

2020-05-17