- ベストアンサー
php、PDOでの接続とクエリの記述位置
- php初心者のため、PDOでの接続とクエリの記述位置について質問します。
- 具体的な例を挙げて説明します。接続に関する部分は最初に記述し、その後にクエリを記述します。
- また、エラーハンドリングも必要です。PDOの接続とクエリの記述位置やルールについて詳しく教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
PHPはHTMLの中に埋め込んで使えるタイプの言語ではありますが、 DB処理の部分と出力部を完全に分けて書くようにすると、処理の流れが掴みやすく、 後からの修正も容易になりますよ。 > PDOの接続とクエリの記述位置やその他のルールを詳しく教えて下さい。 ルールとして覚えるのではなく、各行の意味(なぜその場所でそう書くのか?)を 理解する事が大切です。PDOを使った処理の流れは↓のようになります。 //-- DB処理 $link = new PDO(略); // [1] PDOのオブジェクトを生成(=DBへの接続) $stmt = $link->query('SELECT...'); // [2] 接続したDBに対してクエリ(SELECT文)を発行 $rows = $stmt->fetchAll(略); // [3] 発行したクエリの結果を受け取る //-- 出力 print_r($rows); SELECT文の発行~出力までの基本は、これだけです。 > 先に記述しておき(接続しておいて)、その後htmlやphpの記述をはさみ、 > 必要な部分で以下のように(クエリ)の記述をした場合、動きません。 まずは、上記が動く状態で、var_dump($link, $stmt, $rows); としてみて、 それぞれの変数の中身を確認してみてください。 その後、自分なりに色々アレンジしてみて、動かなくなってしまったら、 同様に var_dump($link, $stmt, $rows); としてみると良いでしょう。
その他の回答 (1)
- mpro-gram
- ベストアンサー率74% (170/228)
エラーは出てないということなのでしょうけど、動かない状況の詳細をもうちょっと欲しいところです。phpでのwarningすらも表示しない設定になってるような気がする。 でも、みなおすと、pdo の実行順というより、htmlの記述の方に問題有りそう。 </tr> と <tr> の間つまり行間で、文字列出力すると、最近のブラウザは、table の枠の外に表示したりして、どこに何が表示されてるか解らなくなります。場合によっては、出力されたhtmlソースをみて初めてwarning表示に気付く。 <table> 出力前に sql文を発行したなら、その直後で、 errorInfo チェックを行って下さい エラーがなければ、<table>用の文字列を出力していくようにします。 また、最後の閉じタグ</table> がないと、表は全く表示されなくなるブラウザも有りますのでこれも注意して下さい。 まずは、html文法で、どこにどの文字列をはさんでよいのか把握する方が先なのでは? あと、ごく初歩的ですが、離れたところに記述してるせいで、途中で、$link 変数に別なデータを入れてしまったりなどもあるので、どの変数がどこで使われてるかなどもしっかり把握しておく必要があります。まあ、ちょっとしたタイプミスで意図せずそうなることもあるので、var_dump() でのチェックは有用です。
お礼
細かい点まで参考になるご説明をいただきありがとうございます。 1つ1つチェックしていきたいと思います。
お礼
参考になる考え方とアドバイスいただきありがとうございます。 (var_dumpで中身の確認する手法、今後役に立ちそうです。) ありがとうございました。