PHP mysql PDO拒绝设置NULL值

时间:2012-07-27 17:33:14

标签: php mysql pdo

我无法使用mysql pdo将默认值为null的可空字段设置为null。我可以使用直接sql来做。

我尝试过:(主要来自这个问题How do I insert NULL values using PDO?

  1. Null Int

    bindValue(':param', null, PDO::PARAM_INT);
    
  2. Null Null

    bindValue(':param', null, PDO::PARAM_NULL);
    
  3. 'Null',Int

    bindValue(':param', 'NULL', PDO::PARAM_INT);
    
  4. 'Null',Null

    bindValue(':param', 'NULL', PDO::PARAM_NULL);
    
  5. bindValue(':param', null);
    
  6. '空'

    bindValue(':param', 'NULL');
    
  7. bindParam对应的5和6,其中一个变量保存了绑定值。

  8. 来自PDO的所有内容都会将值设置为0。

    PHP版本: PHP 5.3.2-1ubuntu4.10

    MYSQL服务器版本: 5.1.63-0ubuntu0.10.04.1

    修改 列信息的屏幕截图

    Picture

2 个答案:

答案 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);

来自巴基斯坦的所有方式:)