我正在创建我正在创建的客户订单php文件。
我正在尝试从我的Stock表中选择stockID,从我的Orders表中选择userID和orderID。
然后将其插入到Ordered_Items表中。
订购1件商品可以正常使用,但是当订购多件商品时,它会显示以下错误:
警告:extract():第一个参数应该是第101行/home/k0900863/www/Coursework/order.php中的数组
foreach ($cart as $id=>$no)
{
$result=mysql_query("SELECT * FROM Stock WHERE stockID='$id'");
$row=mysql_fetch_array($result);
extract($row); // Line 101
$result2=mysql_query("SELECT MAX(orderID) FROM Orders WHERE userID='$userID'");
$row2=mysql_fetch_array($result2);
extract($row2);
mysql_query("INSERT INTO Ordered_Items (stockID, units, orderID)
VALUES ('$id', '$no', '$orderID')");
}
答案 0 :(得分:2)
mysql_fetch_array
可以返回FALSE
而不是Array
。更好地利用这个:
$result=mysql_query("SELECT * FROM Stock WHERE stockID='$id'");
if ($row=mysql_fetch_array($result)) {
extract($row); // Line 101
// Rest of your code ...
}
请参阅:extract
。
答案 1 :(得分:0)
$row=mysql_fetch_array($result);
将(默认情况下)返回一个包含数字和关联键的数组。
这意味着extract($ row)将尝试创建像
这样的变量$ 1
以及
$ COLUMNNAME
和$ 1是变量的无效名称,因为varname是数字
同样,对于$ row2,你有" MAX(orderID)"这意味着extract将尝试创建一个名为
的变量$ MAX(的orderID)
使用mysql_fetch_array()
的第二个参数$row=mysql_fetch_array($result, MYSQL_ASSOC);
或使用
$row=mysql_fetch_assoc($result);