Php PDO MySQL:布尔值在准备好的语句绑定上转换为1或空字符串
我试图在JSON类型的列中插入一些布尔值Php PDO MySQL:布尔值在准备好的语句绑定上转换为1或空字符串,php,mysql,sql,pdo,mysql-json,Php,Mysql,Sql,Pdo,Mysql Json,我试图在JSON类型的列中插入一些布尔值 $taskSql = "INSERT INTO Tasks (data, taskListId) VALUES (JSON_OBJECT('title', :title, 'done', :done), :taskListId)"; $taskStatement = $connection->prepare($taskSql); $taskStatement->execute([":title" => $task->title,
$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在SQL语句中将它们转换为TRUE
或FALSE
,然后将它们转换为正确的JSON布尔值
编辑:
我现在尝试使用bindParam
和bindValue
而不是execute
的参数。这些并不能解决问题,因为PDO仍然将布尔值转换为0
或1
编辑:看起来有一个,仍然没有解决。我结束了将插入行更改为
INSERT INTO Tasks (data, taskListId) VALUES (JSON_OBJECT('title', :title, 'done', :done = TRUE || :done = '1'), :taskListId);
不是解决方案,而是解决方法。调用bind时,
$task->done
的实际值是“true”还是“false”。。。你用的是PDO::PDO_PARAM_BOOL
?@HamzaAbdaoui他们是真正的布尔人,我已经确定了。@NigelRen是的,我是。我有这个想法,试着把$task->done
改成这样的字符串:$newDone=($task->done)?”真’:‘假’代码>