2016-04-28 14 views
0

mysqliの代わりにPDOMySQLを使用しています。 だから、私はこの簡単な関数を定義しよう:mysqliの代わりにPDOとMySqlを使用する

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); 
     } 

をしかし、そうすることで、関数は空の配列を返します。 dbとの接続が正しく動作することを考慮すると、どこにエラーがありますか?

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); 
    } 

またはこの:

おかげ

+1

を、あなたはどの行が全く一致していたかどうかを確認するために、 '$ stmt-> rowCount'をチェックしましたか?空の配列=使用可能な行がありません。 –

+0

パラメータを使用すると、rowCountは0で、パラメータを指定しないクエリを使用するとrowCountは0になります。パラメータを使用する際にエラーが発生しますが、使用方法はわかります – user2520969

+0

何か吹き飛ばされた場合は$ stmt-> errorInfoアップ。 –

答えて

0

はこのお試しください

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

残念ながら、両方の解決策が機能しません... – user2520969

+0

@ user2520969 'ORDER BY'部分を削除してみてください。代わりにこのクエリを試してください: 'SELECT * FROM $ table LIMIT? ' – dimlucas

+0

いいえ、変更されません – user2520969

関連する問題