使用 MySQL JSON_OBJECT() 参数化查询

Using MySQL JSON_OBJECT() with Parameterized query

我试图使用以下 MySQL table 插入一个条目 query.If 我使用 MySQL 参数化查询和 mysqli,如下所示,它没有任何问题.

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

但是如果我如下使用 mysqli 的参数化查询,请将错误“无法从具有字符集 'binary' 的字符串创建 JSON 值放入调试 file.Somebody帮助解决这个问题。

$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);
}

绑定时您只想绑定值,而不是 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\')'