【问题标题】:PDO is inserting "null" for empty valuesPDO 正在为空值插入“null”
【发布时间】: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。问题可能出在代码的其他地方。

标签: php sqlite pdo


【解决方案1】:

尝试在这一行直接发送NULL

  $values = array('id' => 1, 'name' => 'Some Name', 'rank' => NULL);

【讨论】:

  • 那也行不通。更新了问题
猜你喜欢
  • 2019-07-06
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 2012-12-06
  • 2017-09-19
相关资源
最近更新 更多