# `mysqli` の例:接続とクエリ
```
  <?php
  echo "mysqli Example" . "\n";

  mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

  try {
    ~!@$mysqli = new mysqli@!~("127.0.0.1", "root", "", "universe", 4000);
    if (~!@$mysqli->connect_errno@!~) {
      die("Error connecting: " . $mysqli->connect_error);
    }
    ~!@$res = $mysqli->query@!~("SELECT id, name, mass FROM planets");
    if (!$res) {
      echo "Query failed: " . $mysqli->error;
    } else {
      while (~!@$row = $res->fetch_assoc()@!~) {
        echo $row['id'] . ' ' . $row['name'] . ' ' . $row['mass'] . "\n";
      }
    }
  } catch (Exception $e) {
    die($e->getMessage());
  }
  ?>
```
-----------------------------------------------------------------------
プログラムは`mysqli`の新しいインスタンスを作成し、そのコンストラクタにTiDB アドレス、ユーザー名とパスワード、およびデフォルトデータベース（`universe`）を渡します。プログラムは mysqli オブジェクトを `$mysqli` 変数に保存します。

次に、`$mysqli` オブジェクトの `connect_errno` プロパティを調べて、エラーがあるかどうかを判断します。エラーが発生すると、プログラムは (`$mysqli` の `connect_error` プロパティを使用して) ユーザーにエラーメッセージを表示し、終了します。

プログラムは `SELECT` ステートメントを渡して `$mysqli` オブジェクトの `query()` メソッドを呼び出し、ユニバースデータベースに問い合わせます。結果 (`mysqli_result` 型のオブジェクト) を `$res` という変数に格納します。

次に、`$res` オブジェクトに結果が含まれているかどうかを確認します。そうでない場合は、`$mysqli->error` プロパティを使用して障害を報告し、終了します。

次に、プログラムは `$res` に格納されている `mysqli_result` オブジェクトを使用して `fetch_assoc()` メソッドを呼び出し、行を連想配列として取得します。while ループは、すべての行が読み取られるまで (つまり、`$row` が true と評価されなくなる) まで、行を 1 つずつ取得します。

最後に、プログラムは列名を使用して行を表す連想配列内の値を検索し、ユーザーに表示します。

例:
```
<html>

<body>
  <h1>201.4-PHP Connection 09</h1>
  <?php
  echo "mysqli Example - Connect and Query" . "<p>";

  mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

  try {
    $mysqli = new mysqli("127.0.0.1", "root", "", "universe", 4000);
    if ($mysqli->connect_errno) {
      die("Error connecting: " . $mysqli->connect_error);
    }
    $res = $mysqli->query("SELECT id, name, mass FROM planets");
    if (!$res) {
      echo "Query failed: " . $mysqli->error;
    } else {
      while ($row = $res->fetch_assoc()) {
        echo $row['id'] . ' ' . $row['name'] . ' ' . $row['mass'] . "<p>";
      }
    }
    print "End.";
  } catch (Exception $e) {
    die($e->getMessage());
  }
  ?>

</body>

</html>
```