2013-07-03 3 views
2

1.) Можете ли вы вложить в msqli_query внутри цикла while?запрос mysqli в цикле WHILE

2.) Если да, то почему PHP ниже не записывает какие-либо данные в таблицу преформ?

Если я повторяю переменную массива $ build, она отображается правильно, но вставка mysqli ничего не записывает в таблицу в БД. Код нигде не выдает ошибку, так что мне не хватает об этом?

$data = mysqli_query($con,"SELECT * FROM Cart WHERE Buyer_ID='$_SESSION[cid]' AND Cart_Date='$_SESSION[cdate]'"); 
while($build = mysqli_fetch_array($data)) 
{ 
//echo $build[idex]."<br>"; 
mysqli_query($con,"INSERT INTO precords (precord,Buyer_ID,Account,Purchase_Date,Item_Number,Item_Qty,Item_Title,Item_FPrice,Item_FFLFlag,ccpass) VALUES ('$build[idex]','$build[Buyer_ID]','$build[Cart_Date]','$build[Item_Number]','$build[Item_Qty]','$build[Item_Title]','$build[Item_FPrice]','$build[Item_FFLFlag]','N')"); 
}; 

Спасибо за любую помощь.

** P.S. - Этот код предназначен для перемещения определенных значений из переменных TEMPORARY таблицы/сеанса, в постоянную таблицу записей, но цикл необходим, поскольку в телеге, связанной с пользователем/сеансом, имеется более одного продукта.

+0

Да, вы можете сделать это в цикле, но вам не нужно. Ваш 'INSERT' использует только значения из' $ build', поэтому вы можете просто выполнить 'INSERT INTO преференции SELECT col1, col2, col3 ... FROM Cart WHERE Buyer_ID = ...' –

+2

Есть много причин, по которым он может потерпеть неудачу, не в последнюю очередь из-за того, что вы не избегаете значений в '$ build', которые являются _not_ insert-safe, даже если они поступают из базы данных. У вас могут быть синтаксические ошибки. Вы должны проверить 'mysqli_error()', чтобы увидеть, что пошло не так, и в конечном итоге рассмотреть возможность переключения на подготовленные операторы в MySQLi. –

ответ

1

да, вы можете использовать его в петлю и

вы можете хотите добавить mysql_error() функцию, чтобы выяснить, что случилось с ним и попытаться исправить его или добавив ошибку на вопрос, чтобы мы могли сказать вам, что do

$data = mysqli_query($con,"SELECT * FROM Cart WHERE Buyer_ID='$_SESSION[cid]' AND Cart_Date='$_SESSION[cdate]'"); 
    while($build = mysqli_fetch_array($data)) 
    { 
    //echo $build[idex]."<br>"; 
    mysqli_query($con,"INSERT INTO precords 
    (precord,Buyer_ID,Account,Purchase_Date,Item_Number,Item_Qty,Item_Title,Item_FPrice,Item_FFLFlag,ccpass) 
    VALUES 
    ('$build[idex]','$build[Buyer_ID]','$build[Cart_Date]','$build[Item_Number]','$build[Item_Qty]','$build[Item_Title]','$build[Item_FPrice]','$build[Item_FFLFlag]','N') 
    ") or die (mysql_error()); 
     }; 
+0

Добавлен mysql_error, но он не сообщает/не показывает ошибку - сказав, что следующий блок кода теперь не работает, поэтому OR DIE запускается. Я попытаюсь получить что-то, чтобы выработать конкретную ошибку. – DMSJax

+3

Потому что это 'mysqli' не' mysql'. Вам нужно 'mysqli_error ($ con)' вместо этого. –

+0

@MichaelBerkowski Я понял это сразу после публикации комментария. благодаря – DMSJax