2011-07-06 1 views
0

は私の簡単なコード(実際の状況は、ちょうどあなたの問題を表示しない)PDOクエリは、私はPDOのMySQLで問題がここに</p> <p>に照会していた時間

$connexion = new PDO(SQL_DSN, SQL_USERNAME, SQL_PASSWORD); 
$stmt = $connexion->prepare('SELECT * from missions,platforms WHERE missions_platforms_id = exl_platforms_id AND missions_id = :mission'); 
$stmt->execute(array(":mission" => '1')); 
$ligne = $stmt->fetch(PDO::FETCH_ASSOC); 
var_dump($stmt); 

$stmt = $connexion->prepare('SELECT * from missions,platforms WHERE missions_platforms_id = exl_platforms_id AND missions_id = :mission'); 
var_dump($stmt); 
$stmt = $connexion->prepare('SELECT * from missions,platforms WHERE missions_platforms_id = exl_platforms_id AND missions_id = :mission'); 
var_dump($stmt); 

と出力されます:

object(PDOStatement)[2] 
public 'queryString' => string 'SELECT * from missions,platforms WHERE missions_platforms_id = platforms_id AND missions_id = :mission' (length=122) 

boolean false 

object(PDOStatement)[2] 
public 'queryString' => string 'SELECT * from missions,platforms WHERE missions_platforms_id = platforms_id AND missions_id = :mission' (length=122) 

なぜ2番目のvar_dumpがfalseを返すのですか?私はそれが偽の半分の時間を返している回以上同じスキーマをすれば

は...あなた

+0

PHPエラーが印刷されていますか? 'error_reporting(E_ALL | E_STRICT);を追加してみてください。そのコードの前にini_set( 'display_errors'、true); – binaryLV

+0

また、PDO :: errorInfoコールを追加してみてください。ここの例を参照してください。http://www.php.net/manual/en/pdo.errorinfo.php – Mike

+0

バッファされていない他のクエリがアクティブな間はクエリを実行できません。 PDOStatement :: fetchAll()の使用を検討してください。あるいは、コードがmysqlに対してしか実行されない場合は、PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性を設定してクエリのバッファリングを有効にすることができます。 マイクありがとうございました! –

答えて

2

おかげで、あなたの結果はこのようなPDOStatement::closeCursor()を使用してPDOStatement::fetch()で結果セットを読んだ後、カーソルを設定閉じよう:

$connexion = new PDO(SQL_DSN, SQL_USERNAME, SQL_PASSWORD); 
$stmt = $connexion->prepare('SELECT * from missions,platforms WHERE missions_platforms_id = exl_platforms_id AND missions_id = :mission'); 
$stmt->execute(array(":mission" => '1')); 
$ligne = $stmt->fetch(PDO::FETCH_ASSOC); 
var_dump($stmt); 
$stmt->closeCursor(); 

$stmt = $connexion->prepare('SELECT * from missions,platforms WHERE missions_platforms_id = exl_platforms_id AND missions_id = :mission'); 
var_dump($stmt); 
$stmt = $connexion->prepare('SELECT * from missions,platforms WHERE missions_platforms_id = exl_platforms_id AND missions_id = :mission'); 
var_dump($stmt); 

最初のステートメントは、実際に結果を取得する唯一のステートメントです。

関連する問題