Как перебрать каждое значение в массиве, полученном с помощью функции mysqli_fetch_array, и добавить каждое значение в отдельную строку таблицы в базе данных MySQL?

Как можно модифицировать данный код так, чтобы при наличии 3 значений в массиве $row['idkat'], произошло добавление 3 строк в таблицу zakaz?
  • 17 июня 2024 г. 1:21
Ответы на вопрос 2
Чтобы перебрать каждое значение в массиве, полученном с помощью функции mysqli_fetch_array, и добавить каждое значение в отдельную строку таблицы в базе данных MySQL, можно использовать цикл foreach. Вот пример кода:

```php
// Подключение к базе данных
$conn = mysqli_connect('localhost', 'username', 'password', 'database');

// Выполнение запроса к базе данных
$result = mysqli_query($conn, "SELECT * FROM table");

// Перебор значений из результата запроса
while ($row = mysqli_fetch_array($result)) {
    foreach ($row as $value) {
        // Добавление каждого значения в отдельную строку таблицы
        mysqli_query($conn, "INSERT INTO your_table_name (column_name) VALUES ('$value')");
    }
}
```

Чтобы модифицировать данный код так, чтобы при наличии 3 значений в массиве $row['idkat'], произошло добавление 3 строк в таблицу zakaz, можно написать следующий код:

```php
// Подключение к базе данных
$conn = mysqli_connect('localhost', 'username', 'password', 'database');

// Выполнение запроса к базе данных
$result = mysqli_query($conn, "SELECT * FROM table");

// Перебор значений из результата запроса
while ($row = mysqli_fetch_array($result)) {
    $idkat_values = explode(',', $row['idkat']);
    foreach ($idkat_values as $value) {
        // Добавление каждого значения в отдельную строку таблицы
        mysqli_query($conn, "INSERT INTO zakaz (column_name) VALUES ('$value')");
    }
}
```

В данном случае предполагается, что значения в массиве $row['idkat'] разделены запятыми. Мы используем функцию explode(), чтобы разделить строку на массив значений, а затем перебираем каждое значение и добавляем его в отдельную строку таблицы zakaz.
У вас: 
while($row=mysqli_fetch_array($res))
{  
    // #########################
    // ####  начало тела цикла  #####
    // ##########################
    $iduser=$id;
    $idkat=$row['idkat'];
     // #########################
    // ####  конец тела цикла  #####
    // ########################## 
}  
    $res=mysqli_prepare($bd, "INSERT INTO zakaz (iduser,idkat) 
 VALUES(?,?)");
 mysqli_stmt_bind_param($res, 'ii', $iduser,$idkat); // подставляем переменные, которые присвоились на ПОСЛЕДНЕМ прогоне цикла
 $result2=mysqli_stmt_execute($res);

Как вы ожидаете:
while($row=mysqli_fetch_array($res))
{  
    // #########################
    // ####  начало тела цикла  #####
    // ##########################
    $iduser=$id;
    $idkat=$row['idkat'];
    $res=mysqli_prepare($bd, "INSERT INTO zakaz (iduser,idkat) 
 VALUES(?,?)");
 mysqli_stmt_bind_param($res, 'ii', $iduser,$idkat); // подставляем переменные, которые присвоились на ТЕКУЩЕМ прогоне цикла
 $result2=mysqli_stmt_execute($res);
     // #########################
    // ####  конец тела цикла  #####
    // ########################## 
}
Похожие вопросы