php - MySql 和 PDO : How to send a null param with bindParam()

标签 php mysql pdo

参数 $isConfirmed 的值可以是 null、0 或 1。当我尝试发送“null”时,PDO 返回异常。我该如何解决这个问题?

$dbHandler = $dbConnection->prepare("INSERT INTO `Group` (visitId, guideId, groupSize, isConfirmed) VALUES (:visitId, :guideId, :groupSize, :isConfirmed)");
        for($i = 0; $i < count($groupId); $i++) { 
                $dbHandler->bindParam(":visitId", $visitId, PDO::PARAM_INT); 
                $dbHandler->bindParam(":guideId", $guideId, PDO::PARAM_INT); 
                $dbHandler->bindParam(":groupSize", $groupSize, PDO::PARAM_INT); 
                $dbHandler->bindParam(":isConfirmed", $isConfirmed, PDO::PARAM_INT); 
                $dbHandler->execute(); 
        }

最佳答案

更新
好吧,我是个傻瓜,我所有的光顾。

实际上没有必要搞乱参数类型。 PDO 自动绑定(bind) NULL,如果值为 NULL:

$sql = "CREATE TEMPORARY TABLE `nulltest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NULL DEFAULT '',
  PRIMARY KEY (`id`)
)";

$pdo->exec($sql);

$stm = $pdo->prepare("INSERT INTO nulltest SET name = ?");
foreach (array("foo", null) as $val)
{
    $stm->execute([$val]);
}
$stm->bindParam(1, $val, PDO::PARAM_STR);
$stm->execute();

$stm->bindValue(1, NULL, PDO::PARAM_INT);
$stm->execute();

$sql = "SELECT count(*) FROM nulltest WHERE name IS NULL";
$num = $pdo->query($sql)->fetchColumn();
var_dump($num); // outputs 3

所以,正确的代码应该是

$sql = "INSERT INTO `Group` (visitId, guideId, groupSize, isConfirmed) 
        VALUES (:visitId, :guideId, :groupSize, :isConfirmed)";
$stm = $dbConnection->prepare($sql);
$stm->bindParam(":visitId",     $visitId,     PDO::PARAM_INT); 
$stm->bindParam(":guideId",     $guideId,     PDO::PARAM_INT); 
$stm->bindParam(":groupSize",   $groupSize,   PDO::PARAM_INT); 
$stm->bindParam(":isConfirmed", $isConfirmed, PDO::PARAM_INT); 

foreach($groupId as $void)
{ 
    $stm->execute(); 
}

空值会被写入。

关于php - MySql 和 PDO : How to send a null param with bindParam(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19496712/

相关文章:

javascript - jQuery $.getJSON 并遍历数组正在倾倒所有

javascript - 使用Javascript库SJCL加密,使用PHP解密

javascript - JavaScript 中的 Smarty 变量

mysql - ubuntu上的网站突然运行缓慢

php - MySQL - 对项目的时间条目进行分组和汇总

php - PDO MySQL 和 php 类似语句

PHP - 使用点语法查找数组内容

php - zend Framework 2 Db 选择列分组

php - 显示 PDO::FETCH_ASSOC 的多个结果

php - 只是想知道为什么这不起作用,我想将数据从提交表单插入到数据库