【问题标题】:PDO integer nullable value issue [closed]PDO整数可为空值问题[关闭]
【发布时间】:2026-01-03 08:05:01
【问题描述】:

我有一个这样的代码块;

$a='';

$Query =$db->prepare("UPDATE TblUsers
SET Age = :age
WHERE
 IsActive=1 ")
$Query->bindParam(":age",$a,PDO::PARAM_INT);
$Query->execute();

当我运行这段代码时,我得到了这个错误;

PHP 致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE [HY000]:一般错误:1366 不正确的整数值:'' 第 1 行的“年龄”列

但是当我添加 '' 时它将是可为空的变量。但我得到这个错误。我的失败在哪里?

【问题讨论】:

  • 发布$a 的预期值的架构和值。现在,它没有任何价值。或者,允许空/NULL 值。
  • 如果您希望age 的值在某些情况下为空,那么您必须将其设置为null 而不是''
  • 错误很明显。年龄字符串为空,查询需要一个值 int
  • @ZibianDomichi 您需要在您的数据库表中创建列default-value null

标签: php mysql pdo php-5.6


【解决方案1】:

您需要使用bindValue,如下所示:-

$Query =$db->prepare("UPDATE TblUsers
SET Age = :age
WHERE
 IsActive=1 ")
$Query->bindValue(':age', $a, PDO::PARAM_INT);
$Query->execute();

bindParam 接受一个变量来引用,并且在调用bindParam 时不拉入一个值。

推荐人:-How do I insert NULL values using PDO?

【讨论】: