[PHP-users 29301] Re: PDO の使い方
Takashi Tomokuni
ttsan2000 @ gmail.com
2006年 5月 25日 (木) 22:07:23 JST
T_Tsan です。
初めての回答です。
よろしくお願いします。
> <?php
>
> $dbh = new PDO(PDO_DSN, DB_USER, DB_PASSWORD);
>
> $querySentence1 = "SELECT id FROM first_table";
>
> $statement1 = $dbh->prepare($querySentence1);
> if ($statement1->execute()) {
>
> while ($queryValue =
> $statement1->fetch(PDO::FETCH_ASSOC)) {
>
> $querySentence2 = "SELECT data FROM second_table
> WHERE id = {$queryValue['id']} LIMIT 1";
> //$querySentence2 = "SELECT data FROM second_table
> WHERE id = :id LIMIT 1";
> $statement2 = $dbh->prepare($querySentence2);
この部分ですが、前回の fetch が終了していないのに次のクエリは実行できません。
するなら fetchAll で全てデータを取り出してからになります。
全てデータを取り出すときは fetch を回すよりも fetchAll で取り出す方がいいと思います。
次に、クエリを見ると
> $querySentence1 = "SELECT id FROM first_table";
> $querySentence2 = "SELECT data FROM second_table WHERE id = {$queryValue['id']} LIMIT 1";
となっていますので、クエリを見直した方がいいです。
結合を使うと何も考えずに取り出せるはずです。
PHP-users メーリングリストの案内