2016-11-12 3 views
1

Ich mache einen Online-Shop, wo ein Benutzer einen Schuh bestellen kann, dieser wird dann an den Warenkorb übergeben, und der Benutzer kann dann auschecken. Im Moment bekomme ich Fatal error: Aufruf einer Member-Funktion fetch_assoc() für ein Nicht-Objekt, in dieser Zeile '$ row = $ query-> fetch_assoc();' in der checkoutAction.php Datei.Schwerwiegender Fehler: Aufruf einer Memberfunktion fetch_assoc() für ein Nichtobjekt. Versuchen, Produkt zu einem Korb hinzuzufügen

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/Front End

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

Das liegt daran, dass Ihre Abfrage nicht ausgeführt werden konnte. Probieren Sie dies aus: '... Wo equipmentID = '". $ Id. "'"); ' –

Antwort

1

Dies wahrscheinlich, weil Ihre $conn->query(...) Anweisung einen FALSE zurückgibt. Überprüfen Sie die mysqli::query Dokumentation here. Es wird angegeben, dass diese Methode bei einem Fehler FALSE zurückgibt, deshalb gibt $query->fetch_assoc() einen Fehler aus.

Aktualisieren Sie Ihren Code, um diesen Fehler zu erfassen, und zeigen Sie die Fehlermeldung an, damit Sie ihn weiter debuggen können.

$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(); 

Ich hoffe, dies hilft Ihnen.

+0

Danke, das hat funktioniert. – PremiumAluminium

0

Angenommen, Sie mysqli verwenden: Sie müssen das Ergebnis der $conn->query(...) es überprüfen kann false zurückgeben, wenn die Abfrage fehlgeschlagen ist (siehe http://php.net/manual/en/mysqli.query.php).

Und bitte beachten Sie die Verwendung von vorbereiteten Anweisungen, anstatt die equipmentId direkt in die SQL zu setzen, um SQL-Injektion zu verhindern.

Verwandte Themen