在PHP中客户订单的extract()错误

时间:2012-03-11 16:07:07

标签: php mysql warnings

我正在创建我正在创建的客户订单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')");   
   }

2 个答案:

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