我无法使用mysql pdo将默认值为null的可空字段设置为null。我可以使用直接sql来做。
我尝试过:(主要来自这个问题How do I insert NULL values using PDO?)
Null Int
bindValue(':param', null, PDO::PARAM_INT);
Null Null
bindValue(':param', null, PDO::PARAM_NULL);
'Null',Int
bindValue(':param', 'NULL', PDO::PARAM_INT);
'Null',Null
bindValue(':param', 'NULL', PDO::PARAM_NULL);
空
bindValue(':param', null);
'空'
bindValue(':param', 'NULL');
和bindParam
对应的5和6,其中一个变量保存了绑定值。
来自PDO的所有内容都会将值设置为0。
PHP版本: PHP 5.3.2-1ubuntu4.10
MYSQL服务器版本: 5.1.63-0ubuntu0.10.04.1
修改 列信息的屏幕截图
答案 0 :(得分:9)
以下适用于我:
<?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();
传入PHP的null
,其类型为PDO::PARAM_NULL
。此外,请确保您的准备模拟设置为false。这可能有所帮助。
答案 1 :(得分:0)
我强烈建议首先将所有参数分配给变量,然后将这些变量传递给bindParam()方法。
您可以通过将NULL传递给这些变量进行分配,它可以正常工作。
$myVar = NULL;
$conn->bindParam(':param1' , $myVar , PDO::PARAM_STR);
来自巴基斯坦的所有方式:)