首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MySQL JSON_OBJECT()与参数化查询结合使用

将MySQL JSON_OBJECT()与参数化查询结合使用
EN

Stack Overflow用户
提问于 2018-08-20 02:28:50
回答 1查看 602关注 0票数 0

我尝试使用下面的query.If向MySQL表中插入一个条目,我在mysqli中使用了MySQL参数化查询,如下所示,它没有任何问题。

代码语言:javascript
复制
insert into notelist(checksum,details,status,location) values('$checksum',JSON_OBJECT('filename','$filename','checksum','$checksum'),0,'$path')

但是,如果我像下面这样使用mysqli的参数化查询,错误'Cannot create a JSON from a string with the CHARACTER SET 'binary‘已放入调试file.Somebody中,请帮助解决这个问题。

代码语言:javascript
复制
$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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-20 02:41:20

在绑定时,您只希望绑定值,而不是SQL函数、列或表。绑定引用值并转义所有其他引号。您的查询应为:

代码语言:javascript
复制
insert into notelist(checksum,details,status,location) values(?,JSON_OBJECT('filename',?,'checksum',?),?,?)

然后你应该绑定将要绑定的5个值。

代码语言:javascript
复制
$stmt->bind_param("sssis", $checksum, $filename, $checksum, 0, $path);

在当前编写的查询中,JSON_OBJECT应该是一个包含以下内容的字符串:

代码语言:javascript
复制
'JSON_OBJECT(\'filename\',\'filename_VALUE\',\'checksum\',\'$checksum_VALUE\')'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51920646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档