PDO-MySQL: логические значения преобразуются в 1 или пустую строку в подготовленной привязке оператора

Я пытаюсь вставить некоторые логические значения в столбцы типа JSON.

$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-летний отчет об ошибках, это до сих пор не решено.

1

Решение

Я пытаюсь изменить строку вставки на

INSERT INTO Tasks (data, taskListId) VALUES (JSON_OBJECT('title', :title, 'done', :done = TRUE || :done = '1'), :taskListId);

Не решение, а обходной путь.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]