【发布时间】:2021-07-28 16:02:15
【问题描述】:
我正在使用 PDO 写入 sqlite 数据库。
// $dbo is an instance of PDO
$query = "INSERT INTO items (id, name, rank) VALUES (:id, :name, :rank)";
$statement = $dbo->prepare($query);
$values = array('id' => 1, 'name' => 'Some Name', 'rank' => '');
$statement->execute($values);
$values = array('id' => 1, 'name' => 'Some Name', 'rank' => NULL);
$statement->execute($values);
在执行任何这些之后,我希望“rank”是一个空字符串,甚至可以接受 NULL。
但是我在数据库中得到的是'null',是一个字符串'null' 值,而不是真正的NULL。
多次尝试后找不到任何解决方案。
【问题讨论】:
-
rank列的数据类型是什么? -
@KIKOSoftware varchar,允许为空
-
好的,谢谢。我认为 SQLite 可能确实返回了一个真正的
null,但 PHP/PDO 将任何结果(像这样)转换为字符串,因为它不知道NULL结果。再说一次,我希望你的第一次插入会出现一个空字符串,毕竟,一个空字符串也是一个字符串。 -
我 tested this with SQLite 确实,插入一个空字符串确实返回一个空字符串,而不是
null。问题可能出在代码的其他地方。