我想从一个解析过的JSON中插入一些数据到一个表中,但是当我这样做的时候,它不起作用,它返回0行,我错过了什么?我是这个“mysqli”的新手。我有超过25000行要插入到表中。
$mysqli = mysqli_connect('localhost', 'root', '', '');
$allData = $dataSource->getAllData();
foreach ($allData as $key => $value) {
$query = 'INSERT INTO `table`(`data_id`, `name`) VALUES (' . $value['data_id'] . ', ' . $value['name'] . ')';
$result = mysqli_query($mysqli, $query);
}
3条答案
按热度按时间vuktfyat1#
应该使用预准备语句,使用参数绑定不仅更安全(没有SQL注入),而且在添加25000行时也更快一些。
带有错误报告和预准备语句的修复代码如下所示:
efzxgjgh2#
看起来你应该在你的数据值周围加上单引号。同时为你的
mysqli_query
行添加一个mysqli_error
检查,这样你就可以实际看到发生了什么:或者更好的是,像这样使用
mysqli_stmt_bind_param
。允许MySQLi处理整个查询数据结构,而不必担心单引号的位置。另外,在mysqli_connect
行上添加了mysqli_connect_error
检查:注意,我有一个
mysqli_stmt_bind_param
的注解行,因为我不清楚$value['data_id']
是一个数字还是一个字符串。mysqli_stmt_bind_param($query, 'is',…
意味着第一个值是一个整数(i
),下一个值是一个字符串(s
)。请随意调整以最适合您的实际数据类型。t8e9dugd3#
一个更自动的解决方案是:
这个解决方案也是普通的mysqli,对于外部输入使用预准备语句或pdo之类的!