$taskSql = "INSERT INTO Tasks (data, taskListId) VALUES (JSON_OBJECT('title', :title, 'done', :done), :taskListId)";
$taskStatement = $connection->prepare($taskSql);
$taskStatement->execute([":title" => $task->title, ":done" => $task->done, ":taskListId" => $id]);
这将导致执行以下SQL。
-- $task->done is false
INSERT INTO Tasks (data, taskListId) VALUES (JSON_OBJECT('title', 'New Task', 'done', ''), '12')
-- $task->done is true
INSERT INTO Tasks (data, taskListId) VALUES (JSON_OBJECT('title', 'New Task', 'done', '1'), '12')
有没有办法让PDO把它们变成
TRUE
FALSE
在SQL语句中,将它们转换为正确的JSON布尔值。
编辑:
我现在尝试使用
bindParam
和
bindValue
execute
。由于PDO仍将布尔值转换为
0
或
1
编辑:看起来有一个
11 year old bug report