mysql — вставляет запрос в двухмерный массив, используя переполнение стека

Я работаю над этим простым запросом внутри двумерного массива, моя проблема в том, что он не работает, и ошибка говорит 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

Решение

Ну, это что-то. Пара моментов: 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;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector