我创建的客户订单php文件有问题。
我正在尝试从我的Stock表中选择stockID,从Orders表中选择userID和orderID。
然后,它将被插入到我的Ordered_Items表中。
它在订购一个项目时工作良好,但当订购多个项目时,它会显示以下错误:
警告: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')");
}
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
。
$row=mysql_fetch_array($result);
将(默认情况下)返回一个同时具有数字键和关联键的数组。
这意味着extract($row)将尝试创建类似的变量
$1
以及
$columnname
$1是变量的无效名称,因为varname是数字
同样,对于$row2,您有"MAX(orderID)",这意味着extract将尝试创建一个名为的变量
$MAX(订单ID)
请使用mysql_fetch_array()的第二个参数
$row=mysql_fetch_array($result, MYSQL_ASSOC);
或使用
$row=mysql_fetch_assoc($result);