使用PDO命名占位符时无法插入整数

时间:2012-04-06 18:37:20

标签: php sql pdo placeholder

我正在使用这样的命名占位符:

    $job['services_flag'] = 0;

    $SQL = "INSERT INTO jobs (
                        services_flag
                    )
                    VALUES (
                        :services_flag
                    )";

    $STH = $DBH->prepare($SQL);
    $STH->execute($job);

但是,这坚持插入1

如果我不使用命名占位符:

    $SQL = "INSERT INTO jobs (
                        services_flag
                    )
                    VALUES (
                        0
                    )";

    $STH = $DBH->prepare($SQL);
    $STH->execute();

然后插入0。是吗?

更新 我的SQL数据库中services_flag字段的数据类型是BIT。我不知道这是否有所不同。

2 个答案:

答案 0 :(得分:1)

这是known bug BIT类型,你应该使用bindParam

答案 1 :(得分:0)

您需要将值绑定到它:

$STH->bindValue(':services_flag', $job['services_flag']);
$STH->execute();

这是一种方法。我已经看到一个数组,其值映射到在execute()中传递的占位符。