【发布时间】:2013-07-01 16:44:31
【问题描述】:
1.) 可以在 while 循环中嵌套 msqli_query 吗?
2.) 如果是,为什么下面的 PHP 不会向 precords 表写入任何数据?
如果我回显一个 $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')");
};
感谢您的帮助。
** - 此代码旨在将某些值从 TEMPORARY 表/会话变量移动到永久记录表,但需要循环,因为购物车中有多个产品与用户/会话关联。
【问题讨论】:
-
是的,您可以循环执行此操作,但您不需要这样做。你的
INSERT只使用来自$build的值,所以你可以做INSERT INTO precords SELECT col1,col2,col3... FROM Cart WHERE Buyer_ID=... -
它失败的原因有很多,其中最重要的一点是您没有转义
$build中的值,这些值甚至是 not 插入安全的尽管它们来自数据库。你可能有语法错误。你应该检查mysqli_error()看看出了什么问题,并最终考虑切换到 MySQLi 中的预处理语句。
标签: php mysqli while-loop