質問: $pdo -> query($sql1); while($data= $stmt ->fetch(PDO::FETCH_ASSOC)){ echo $data['**']; } while($data1= $stmt1 ->fetch(PDO::FETCH_ASSOC)){ echo $data['xx']; } ``` 複文記述する際、このような感じでデータを取れることは理解しました。(命令をstmtに保存してるイメージなのかなという解釈です) ただこれだと、**[0],**[1]...xx[0],xx[1]となってしまいます。 ―――――――――――――― |**[0]|xx[0]| |**[1]|xx[1]| |**[2]|xx[2]| ―――――――――――――― このように交互にデータの取得を行いたいです。 while文内では、データに命令されたデータを代入しある分を保持→表示しているのかなという解釈をしていて、 それだとwhile文の中にwhile文を書いてもやりたい処理はできなく困っています。 交互にデータを取ってくる処理のご教授をお願いしたいです。 何度もすみません。よろしくお願いします。
回答: 対応策はg737a6bさんが記載してくださってるので、その解説でも... PDOは基本的に複数のSQLを同時に発行出来ない仕様だったかと思います。 よくあるSQLインジェクション対策です。 SQL自体は正常に発行されて、 `echo $data['xx']`の行で$dataには`xx`なんてキーは存在しねーよというエラーが出てるかと思います。 最初のSQL文章だけ処理されて、後者は切り捨てられてるからかと思います。 具体的な動作は確認してみてください。