2016-04-28 8 views
0

Ich beginne mit PDO und MySQL anstelle von mysqli. Also, ich versuche, diese einfache Funktion zu definieren:Verwenden von PDO und MySql anstelle von Mysqli

public function getIntro($table) { 
      $stmt = $this->db->prepare("SELECT * FROM $table ORDER BY rand() LIMIT ?"); 
      $stmt->execute(array(6)); 
      return $stmt->fetchAll(PDO::FETCH_ASSOC); 
     } 

Aber dabei die Funktion ein leeres Array zurück. In Anbetracht der Tatsache, dass die Verbindung mit der db ordnungsgemäß funktioniert, wo ist der Fehler?

Dank

+1

haben Sie überprüfen '$ stmt-> rowCount', um zu sehen, ob Zeilen überhaupt abgestimmt wurden? leeres Array = keine Zeilen verfügbar. –

+0

Mit dem Parameter der rowCount ist 0, mit einer Abfrage ohne Parameter der rowCount ist> 0. Also ist der Fehler in der Verwendung des Parameters, aber ich kann verstehen, wie es – user2520969

+0

dann überprüfen $ stmt-> errorInfo(), wenn etwas blasen oben. –

Antwort

0

Try this:

public function getIntro($table) { 
     $stmt = $this->db->prepare("SELECT * FROM $table ORDER BY rand() LIMIT ?"); 
     $stmt->bindValue(1, 6); 
     $stmt->execute(); 
     return $stmt->fetchAll(PDO::FETCH_ASSOC); 
    } 

oder dies:

public function getIntro($table) { 
      $stmt = $this->db->prepare("SELECT * FROM $table ORDER BY rand() LIMIT :limit"); 
      $stmt->execute(array(':limit' => 6)); 
      return $stmt->fetchAll(PDO::FETCH_ASSOC); 
     } 
+0

Leider funktionieren beide Lösungen nicht ... – user2520969

+0

@ user2520969 Versuchen Sie, den 'ORDER BY' Teil zu entfernen. Versuchen Sie diese Abfrage stattdessen: 'SELECT * FROM $ Tabelle LIMIT?' – dimlucas

+0

Nein, es ändert sich nicht – user2520969

Verwandte Themen