【发布时间】:2019-02-06 16:19:14
【问题描述】:
我有以下查询,它应该插入 0 但插入 1。 它在 PHP 中使用准备好的语句执行:
$insertsql=
"INSERT INTO table1 (column1, column2, column3, column4, column5, column6)
VALUES (?, ?, ?, ?, ?, ?)";
$insertstmt = $pdo->prepare($insertsql);
$insertstmt->execute(array($var1, $var2, $var3, $var4, $var5, 0));
所有插入都执行得很好,除了在 column6 中插入 1 而不是 0。 第 6 列的数据类型为 BIT。
查询运行良好,但是在执行时
INSERT INTO table1 (column6) VALUE (0);
直接在 phpmyadmin 'MySQL' 选项卡中。
我错过了什么?
编辑: 使用
$insertstmt->execute(array($var1, $var2, $var3, $var4, $var5, false));
按预期工作。为什么 0 直接在 SQL 查询中工作,而在使用 pdo 执行时却不行?
【问题讨论】:
-
传递绑定时的默认绑定类型是字符串,这意味着 0 将变为
'0',如果以某种方式转换为布尔值,它将变为 1。我建议您使用bindValue使用第二个参数来明确说明您要绑定的类型。
标签: php mysql sql pdo sql-insert