相关疑难解决方法(0)

如何使用PDO插入NULL值?

我正在使用这段代码,我感到非常沮丧:

try {
    $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
}
catch(PDOException $e)
{
    ...
}
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)');
$stmt->bindParam(':v1', PDO::PARAM_NULL); // --> Here's the problem
Run Code Online (Sandbox Code Playgroud)

PDO::PARAM_NULL, null, '', 所有这些都失败并抛出此错误:

致命错误:无法通过/ opt /中的引用传递参数2

php mysql null pdo sql-insert

102
推荐指数
5
解决办法
9万
查看次数

PHP mysql PDO在非可空列中设置0,而不是在输入为空时引发异常

使用PHP PDO for mysql更新具有空值的非可空字段时,我无法生成错误或异常.直接sql给出了预期的错误.

来自PDO的所有内容都会导致status_id字段的值设置为0,而不是异常或错误,表示该字段不允许为null.

$stmt_handler = $this->db_handler->prepare(
  "UPDATE faxes SET metadata = :metadata, status_id = :status_id, 
  created = :created, updated = :updated, content = :content, 
  vendor_fax_id = :vendor_fax_id WHERE id = :id");
$stmt_handler->bindParam(':id', $fax->id);
$stmt_handler->bindParam(':metadata', $fax->metadata);
$stmt_handler->bindParam(':status_id', $fax->status_id); // tried different combinations
$stmt_handler->bindParam(':created', $fax->created);
$stmt_handler->bindParam(':updated', $fax->updated);
$stmt_handler->bindParam(':content', $fax->content);
$stmt_handler->bindParam(':vendor_fax_id', $fax->vendor_fax_id);
$stmt_handler->execute();
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的组合并将PDO :: ATTR_EMULATE_PREPARES设置为false(正如此问题所建议的那样,PHP mysql PDO拒绝设置NULL值)

我的原始绑定:

bindParam(':status_id', $fax->status_id);
Run Code Online (Sandbox Code Playgroud)

尝试过

bindValue(':status_id', null, PDO::PARAM_INT);
bindValue(':status_id', null, PDO::PARAM_NULL);
bindValue(':status_id', 'NULL', PDO::PARAM_INT);
bindValue(':status_id', 'NULL', PDO::PARAM_NULL);
bindValue(':status_id', null);
bindValue(':status_id', …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

5
推荐指数
1
解决办法
1102
查看次数

标签 统计

mysql ×2

pdo ×2

php ×2

null ×1

sql-insert ×1