Использование MySQL JSON_OBJECT () с параметризованным запросом

Я пытался вставить запись в таблицу MySQL, используя следующий запрос. Если я использую параметризованный запрос MySQL с mysqli, как показано ниже, он работает без каких-либо проблем.

insert into notelist(checksum,details,status,location) values('$checksum',JSON_OBJECT('filename','$filename','checksum','$checksum'),0,'$path')

Но если я использую параметризованный запрос с mysqli, как показано ниже, ошибка «Невозможно создать значение JSON из строки с двоичным набором CHARACTER SET» помещается в файл отладки. Кто-нибудь, пожалуйста, помогите исправить это.

$stmt = $con->prepare("insert into notelist(checksum,details,status,location) values(?,?,?,?)");
$stmt->bind_param("sbis", $checksum, $a = "JSON_OBJECT('filename','$filename','checksum','$checksum')", $b = 0, $path);
$result = $stmt->execute();
if (false === $result) {
file_put_contents("db.txt", "connecterror" . $stmt->error);
}

0

Решение

При связывании вы хотите связывать только значения, а не функции SQL, столбцы или таблицы. Привязка заключает в кавычки значение и экранирует все остальные кавычки. Ваш запрос должен быть:

insert into notelist(checksum,details,status,location) values(?,JSON_OBJECT('filename',?,'checksum',?),?,?)

а затем вы должны связать 5 значений, которые будут связаны.

$stmt->bind_param("sssis", $checksum, $filename, $checksum, 0, $path);

Как написано в настоящее время ваш запрос будет иметь JSON_OBJECT в виде строки, содержащей:

'JSON_OBJECT(\'filename\',\'filename_VALUE\',\'checksum\',\'$checksum_VALUE\')'
1

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

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

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