如何解决在foreach循环内的mysqli查询-语法问题
我有以下mysqli查询:
output = list(i)
old_names = np.array(g.vs['name'])
fixed_output = [old_names[n].tolist() for n in output]
#new output: [[0,4,5,6,7],[1,2,9,13],[3,14,16]]
这是我的数据库表“项目”:
$conn = new mysqli("localhost","xx","xx");
foreach ($response as $class) {
$sqle= "REPLACE INTO `items`
(`item_ids`)
VALUES
('{$class['id']}'";
if ($conn->query($sqle) === TRUE) {
//
} else {
echo "Problem";
}
}
item_ids | item_class | item_subclass
-------------------------------------------
| 4 | 5
是一个API数组,从中可以获取item_ids的值。
我收到以下错误:
您的SQL语法有误;检查手册 对应于您使用正确语法的MySQL服务器版本 在第4行的“”附近
我不明白这里的语法有什么问题吗?
如果我在foreach循环中$response
(无查询),则会得到期望值。因此,其中的查询存在问题。
解决方法
您的SQL查询缺少右括号。
$sqle= "REPLACE INTO `items`
(`item_ids`)
VALUES
('{$class['id']}'";
应为:
$sqle= "REPLACE INTO `items`
(`item_ids`)
VALUES
('{$class['id']}')";
^ here
您应该学习使用查询参数。这样一来,发现这种标点符号错误就更容易了,而又不会在视觉上与所有不同的引号和花括号混淆。
prepare()
此查询:
$sqle= "REPLACE INTO `items`
(`item_ids`)
VALUES
(?)";
然后绑定参数,然后执行。
参数化查询使编写代码更容易而不会出错。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。