php - 使用php在二维数组中插入查询
问题描述
我正在处理二维数组中的这个简单查询,我的问题是它不起作用,并且错误显示 Array to string conversion
。我尝试使用 implode 但也没有用。希望你能帮助我。
Array(
[0] => Array (
[0] => 04:56:27am
[1] => http://www.industrialknive.com/#
[2] => 200
[3] => 0
)
[1] => Array (
[0] => 04:56:28am
[1] => http://www.industrialknive.com/#
[2] => 200
[3] => 0
)
[2] => Array (
[0] => 04:56:30am
[1] => mailto:support@industrialknive.com
[2] => 301
[3] => 1
)
)
代码:
$last_id = $conn->insert_id;
for($i=0; $i < count($arrList); $i++){
for($ii=0; $ii < count($arrList[$i]); $ii++){
$sql = "INSERT INTO links (website, scanned_at, site_url, url_code, is_external ) VALUES ('$last_id', '$arrList[$i][$ii]', '$arrList[$i][$ii]', '$arrList[$i][$ii]', '$arrList[$i][$ii]')";
if ($conn->query($sql) === FALSE) {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
解决方案
嗯,就是这样。几点: 1) PHP 有一个foreach
构造,所以你不需要使用老式的for
循环。2)您通过使用字符串连接来构建查询,从而使自己对SQL 注入开放。3)您为每个数组的每个元素运行一次该查询。
自从我使用 mysqli 以来已经有一段时间了,但是这样的事情应该可以工作:
<?php
$last_id = $conn->insert_id;
$query = "INSERT INTO links (website, scanned_at, site_url, url_code, is_external ) VALUES (?, ?, ?, ?, ?)";
if ($stmt = $conn->prepare($query)) {
foreach ($arrList as $arr) {
$stmt->bind_param("isssi", $last_id, $arr[0], $arr[1], $arr[2], $arr[3]);
if (!$stmt->execute()) {
echo "Error executing: " . $sql . "<br>" . $stmt->error;
}
}
} else {
echo "Error preparing: " . $sql . "<br>" . $conn->error;
}
推荐阅读
- php - PhP foreach through class instances
- ruby-on-rails - DatabaseCleaner raising NoMethodError: undefined method `rollback' for nil:NilClass
- javascript - 修改外部 React 组件的渲染功能(无权限)
- r - Selecting unique values without repeating colums
- python - 比较列表Python中的多个列表
- windows - 启用/禁用代理的 Bat 文件
- .htaccess - 如果 URL 包含某个符号,则 htaccess 重定向
- windows-installer - 是否可以从 msi 安全删除 ScheduleReboot?
- freeradius - 如何使 LDAP 身份验证在 EAP 上工作
- android - 将布局滑动到屏幕中间(向上滑动),然后向上或向下滑动