2016-11-12 27 views
1

我正在做一個網上商店,用戶可以訂購一個鞋子,然後傳遞到購物籃,然後用戶可以結賬。目前我遇到致命錯誤:調用非線對象上的成員函數fetch_assoc(),在這行'$ row = $ query-> fetch_assoc();'在checkoutAction.php文件中。致命錯誤:調用非對象上的成員函數fetch_assoc()。試圖將產品添加到購物籃

checkoutAction.php

 <?php 


     include "checkout.php"; 

     $checkout = new Checkout; 

     include "db.php"; 



    $id = $_REQUEST['equipmentID']; 

    $query = $conn->query("Select * from equipment Where equipmentID = ".$id); 
    $row = $query->fetch_assoc(); 
    $data = array('id' => $row['equipmentID'], 'name' => $row['productname'], 'price' => $row['purchaseprice'], qty=> '1'); 

    $addProduct = $checkout->addToBasket($data); 
    $redirect = $addToBasket?'viewBasket.php':'goretex.php'; 
    header($redirect); 


    } 

checkout.php

<?php 

    session_start(); 

    class Checkout { 

public function addToBasket($product = array()) 
{ 
     $product['quantity'] = (float) $product['quantity']; 
     $product['purchaseprice'] = (float) $product['purchaseprice']; 
     $equipmentid = md5($product['equipmentID']); 


     if($this->saveCheckout()) 
     { 
      return isset($equipmentid) ? $equipmentid : TRUE; 

     } else { 
      return FALSE; 
     } 


} 

HTML /前端

div class="btn-group"> 
       <button type="button" id="size" onclick  ="changeColor()"class="btn btn-warning">7</button> 
       <button type="button" class="btn btn-warning">8</button> 
       <button type="button" class="btn btn-warning">9</button> 
       <button type="button" class="btn btn-warning">10</button> 
       <button type="button" class="btn btn-warning">11</button> 
       <button type="button" class="btn btn-warning">12</button> 
       </form> 
      </div> 
      <br> 
      <br> 
      <a href="basketAction.php?action=addToBasket&equipmentID=<?php echo $row["equipmentID"]; ?> class="btn btn-info" role="button">Add to Basket</a> 
     </div> 
+1

這是因爲您的查詢未能執行。試試這個,'... where equipmentID ='「。$ id。」'「);' –

回答

1

這可能是因爲你的$conn->query(...)語句返回一個FALSE。檢查mysqli::query文檔here。據說在失敗時該方法將返回FALSE,這就是爲什麼$query->fetch_assoc()會引發錯誤。

更新您的代碼以捕獲此故障並顯示錯誤消息,以便您可以進一步調試它。

$query = $conn->query("Select * from equipment Where equipmentID = ".$id); 

// If query return FALSE, there's an error. 
if (! $query) { 
    throw new \Exception("Database errror: {$conn->error}"); 
} 

$row = $query->fetch_assoc(); 

希望這對你有所幫助。

+0

謝謝你這個工作。 – PremiumAluminium

0

假設你正在使用的mysqli:你需要檢查的$conn->query(...)結果它如果查詢失敗,可能會返回false(請參閱http://php.net/manual/en/mysqli.query.php)。

請考慮使用預準備語句,而不是將equipmentId直接放入SQL中,以防止SQL注入。

相關問題