php, mysql, вставка данных с помощью цикла

0

Я получаю данные API, которые я должен хранить в базе данных. Я должен использовать цикл, потому что я не могу знать, сколько предметов клиент поставит в корзину. Для получения дополнительной информации, пожалуйста, посмотрите мой пример. Зависит от цикла. Мне удается сохранить только первый или последний элемент... Любая помощь будет оценена.

<?php

$data = array
  (
  array("Item1"),
  array("Item2"),
  array("Item3"),
  array("Item4"),

  );

$count = count($data);    

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);


$x = 0;
while($x <= $count-1) {
    $mytest = $data[$x][0];
echo $mytest;
$sql = "INSERT INTO test (mytest)
VALUES ('$mytest')";


  $x++;
}

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
  • 1
    ВНИМАНИЕ : При использовании mysqli вы должны использовать параметризованные запросы и bind_param для добавления пользовательских данных в ваш запрос. НЕ используйте интерполяцию или конкатенацию строк для достижения этой цели, поскольку вы создали серьезную ошибку внедрения SQL . НИКОГДА не помещайте $_POST , $_GET или любые пользовательские данные непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.
  • 0
    Примечание. Попробуйте избавиться от привычки объявлять операторы SQL в одноразовых переменных, которые используются только один раз. Намного проще следовать коду, в котором запрос передается непосредственно в функцию, и больше нет шансов испортить и отправить $sql3 вместо визуально подобного $sql8 .
Показать ещё 7 комментариев
Теги:

1 ответ

0

Цикл foreach всегда лучше, чем при повторении массива.

Конструкция foreach обеспечивает простой способ перебора массивов. foreach работает только с массивами и объектами и выдает ошибку при попытке использовать ее для переменной с другим типом данных или неинициализированной переменной. Существует два синтаксиса:

foreach (array_expression as $value)
    statement

foreach (array_expression as $key => $value)
    statement

Решение вашей проблемы:

foreach($data as $val) {
    echo $val;
    $sql = "INSERT INTO test (mytest) VALUES ('$mytest')"; 
    if ($conn->query($sql) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню