1

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

    $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. 诶?

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

4

2 回答 2

1

这是一个已知BIT类型错误,您应该使用bindParam

于 2012-04-06T18:53:53.997 回答
0

您需要为其绑定一个值:

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

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

于 2012-04-06T18:54:35.357 回答