dazle
@dazle
Хороший электрик, но в душе программист

Как взять каждое значение массива mysqli_fetch_array и занести каждое значение в строку таблицы mySQL?

$id=$_SESSION['id'];
$res=mysqli_query($bd, "SELECT * FROM corzina WHERE iduser=$id ");

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);

Допустим если у меня в таблице corzina WHERE iduser=$id (3 значения в массиве $row['idkat']; ) , то мне нужно выполнить код добавления в таблицу zakaz 3 раза и он добавит 3 строки в таблицу zakaz
666f8c6b31ce7935088619.png
Почему то он добавляет только одну строку в таблицу а не 3, там походу надо сделать цикл чтобы он вводил каждое значение массива а не первое
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@alexalexes
У вас:
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'];
    $res2=mysqli_prepare($bd, "INSERT INTO zakaz (iduser,idkat) 
 VALUES(?,?)");
 mysqli_stmt_bind_param($res2, 'ii', $iduser,$idkat); // подставляем переменные, которые присвоились на ТЕКУЩЕМ прогоне цикла
 $result2=mysqli_stmt_execute($res2);
     // #########################
    // ####  конец тела цикла  #####
    // ########################## 
}

PS: Есть нюанс. Обработку второго запроса нужно вести по отдельному дескриптору $res2, чтобы не поломать дескриптор $res, по которому работает while.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
$id = $_SESSION['id'];
$sql = "INSERT INTO zakaz (iduser,idkat) SELECT iduser, idkat FROM corzina WHERE iduser=?";
$stmt = $bd->prepare($sql);
$stmt->bind_param('i', $id); 
$stmt->execute($res);

Не очень понятно, впрочем, в чем смысл этого запроса. А точнее почему ни в корзине, ни в заказе нет количества товара, а в заказе не фиксируется цена.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы