我正在使用这样的命名占位符:
$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
。我不知道这是否有所不同。
答案 0 :(得分:1)
这是known bug BIT
类型,你应该使用bindParam
答案 1 :(得分:0)
您需要将值绑定到它:
$STH->bindValue(':services_flag', $job['services_flag']);
$STH->execute();
这是一种方法。我已经看到一个数组,其值映射到在execute()中传递的占位符。