2015-12-02 100 views
0

我的PHP算法出現問題。它應該將客戶訂購的物品插入到數據庫中。當訂單總額小於12磅並且要交貨時,交貨費用將被添加到多維數組$ orderItems中。當訂單總額大於或等於20磅時,免費項目將被添加到此陣列中。對瀏覽器的響應顯示數組正在被正確添加,但SQL查詢似乎沒有包含我在PHP中添加到數組的項目。已經在數組中的任何其他項目都可以毫無問題地添加並在數據庫中正常顯示。MySQL查詢不插入在PHP中添加的數組元素

我想幫助我的算法添加$ orderItems多維數組中的所有項目。

的PHP:

if (($orderTotal < 12.00) && ($deliveryorcollection == "Delivery") == TRUE) 
{ 
    array_push($orderItems, array('dish_id' => "1F", 'dish_name' => "Delivery Charge 1", 'dish_size' => "Regular", 'dish_quantity' => 1, 'dish_price' => 1.00)); 
} 
if ($orderTotal >= 20.00) 
{ 
    array_push($orderItems, array('dish_id' => "1E", 'dish_name' => "Mini Vegetarian Spring Rolls", 'dish_size' => "Regular", 'dish_quantity' => 1, 'dish_price' => 0.00)); 
} 

var_dump($orderItems); 

foreach ($orderItems as $k => $cur) 
{ 
    $sql = "INSERT INTO `airsofto_YummyYummy`.`ItemOrders` (`OrderID`, `DishID`, `OrderQuantity`, `DishSize`) VALUES ('$orderid', '$cur->dish_id', '$cur->dish_quantity', '$cur->dish_size')"; 
    //Line where the error occurs^ 
    if ($conn->query($sql) === TRUE) 
    { 
     echo "New itemOrder record created successfully"; 
    } 
    else 
    { 
     echo "Error: " . $sql . "<br>" . $conn -> error; 
    } 
} 

這是它印到瀏覽器:

array(2) { [0]=> object(stdClass)#1 (5) { ["dish_id"]=> int(55) ["dish_name"]=> string(17) "Chicken Chow Mein" ["dish_size"]=> string(5) "Large" ["dish_quantity"]=> string(1) "1" ["dish_price"]=> float(4.6) } [1]=> array(5) { ["dish_id"]=> string(2) "1F" ["dish_name"]=> string(17) "Delivery Charge 1" ["dish_size"]=> string(7) "Regular" ["dish_quantity"]=> int(1) ["dish_price"]=> float(1) } } New itemOrder record created successfullyError: INSERT INTO airsofto_YummyYummy . ItemOrders (OrderID , DishID , OrderQuantity , DishSize) VALUES ('161', '', '', '') Cannot add or update a child row: a foreign key constraint fails (airsofto_YummyYummy . ItemOrders , CONSTRAINT ItemOrders_ibfk_2 FOREIGN KEY (DishID) REFERENCES Dishes (DishID))

你可以看到正在添加的陣列成功,但SQL查詢沒有按不包含來自包含添加的傳送費用的數組元素的dish_id,dish_name,dish_size,dish_quantity或dish_price。

我會注意到數據庫中的DishID列是一個varchar。

非常感謝提前。如果還有其他任何可能有用的信息,請發表評論。

+1

看起來像你期待'$ orderItems'是對象的數組,但你的'array_push'呼叫加入陣列。這可能沒有幫助。 –

+0

不要你有一個SQL錯誤? – mlwacosmos

+0

@JonStirling我正在研究你的建議。謝謝。 – Oli

回答

0

JonStirling評論了答案。謝謝!

我需要投我的數組作爲對象...

array_push($orderItems, (object) array('dish_id' => "1F", 'dish_name' => "Delivery Charge 1", 'dish_size' => "Regular", 'dish_quantity' => 1, 'dish_price' => 1.00));