[英]PHP mysql PDO refuses to set NULL value
我无法使用 mysql pdo 将默认值为 null 的可空字段设置为 null。 我可以使用直接的 sql 来完成。
我试过:(主要来自这个问题How do I insert NULL values using PDO? )
空整数
bindValue(':param', null, PDO::PARAM_INT);
空空
bindValue(':param', null, PDO::PARAM_NULL);
'空',整数
bindValue(':param', 'NULL', PDO::PARAM_INT);
'空',空
bindValue(':param', 'NULL', PDO::PARAM_NULL);
空值
bindValue(':param', null);
'空值'
bindValue(':param', 'NULL');
和 5 和 6 的bindParam
对应物,带有一个保存绑定值的变量。
PDO 中的所有内容都会将该值设置为 0。
PHP 版本: PHP 5.3.2-1ubuntu4.10
MYSQL 服务器版本: 5.1.63-0ubuntu0.10.04.1
编辑列信息的屏幕截图
以下对我有用:
<?php
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "pass");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $pdo->prepare("INSERT INTO `null_test` (`can_be_null`) VALUES (:null)");
$stmt->bindValue(":null", null, PDO::PARAM_NULL);
$stmt->execute();
PDO::PARAM_NULL
PHP 的null
,类型为PDO::PARAM_NULL
。 此外,请确保您的准备模拟设置为 false。 那可能会有所帮助。
我强烈建议首先将所有参数分配给变量,然后将这些变量传递给bindParam()
方法。
您可以通过将 NULL 传递给这些变量来分配,它会正常工作。
$myVar = NULL;
$conn->bindParam(':param1' , $myVar , PDO::PARAM_STR);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.