ここから本文です

PHP学習中です。 とある教則アプリで添付画像の説明がありました。 これはあって...

dai********さん

2016/3/619:05:23

PHP学習中です。
とある教則アプリで添付画像の説明がありました。
これはあっているのでしょうか?
というのも、$b は、変数への代入であって実行ではないのではないか?
この場合$e の中

に$bが出てこないといけないのではないかと認識しているのですか、私の認識間違いでしょうか。

認識間違いの場合、納得できるご説明を頂けると助かります。
何卒宜しくお願い致します。

教則アプリ,代入,ご説明,変数,認識間違い,リソース型,PHP5.3以降

閲覧数:
40
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

mpywさん

2016/3/703:50:36

このアプリ鵜呑みにしちゃだめです.PHP5.3以降では非推奨,さらにPHP7.x系では削除されて使えなくなっている関数を使用しています.しかもHTMLタグをecho/print連発で表示するのもまたPHPの不適切な使い方であり,初心者に悪い癖を覚えさせてしまう点でもダメだと思います…

それはさておき,コードの説明をすると…ってこれもまた誤解を招くような酷いコードがw

1行目はMySQLデータベースに接続し,「リソース型」(PHPから外部の世界に触れるための情報が格納される型) として生成された接続情報を $a に代入しています.

2行目は,$a が現在参照するデータベースを指定します.$b に代入されるのはこの関数実行が成功したかどうかを表す True/False の返り値だけです.データベースが存在していれば成功するのは当たり前なので,検証しないのであればこの代入は不必要です.

4行目で $a に対してクエリを発行しています.結果セットは「リソース型」として $d に代入されます.

5行目以降のループで,結果セットから1行ずつ順番に取り出して $e に代入しています.全て回し終わった時には $e に代入されるものは false になるので,これがそのまま while ループの脱出条件となります.

  • mpywさん

    2016/3/703:58:15

    今風のコード

    <?php

    function h() {
      return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
    }

    try {
      
      $dsn = 'mysql:dbname=database;host=localhost;charset=utf8';
      $pdo = new \PDO($dsn, 'userid', 'password');
      $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
      $rows = $pdo->query('select id, name from a')->fetchAll(\PDO::FETCH_ASSOC);
      
    } catch (\PDOException $e) {
      
      header('Content-Type: text/plain; charset=UTF-8', true, 500);
      exit($e->getMessage());
      
    }

    header('Content-Type: text/html; charset=UTF-8');

    ?>
    <!DOCTYPE html>
    <title>Example</title>
    <table>
      <tr><th>ID</th><th>名前</th></tr>
    <?php foreach ($rows as $row): ?>
      <tr><td><?=h($row['id'])?></td><td><?=h($row['name'])?></td></tr>
    <?php endforeach; ?>
    </table>

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2016/3/7 21:03:46

文字列ではなく、関数の結果が変数に代入されるのですね。
今風のコードまでありがとうございます。
とても勉強になりました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる