DAY 51 PHP自主練 PDOのオプションって何?

DAY 51 PHP自主練 – PDOのoptionって何だろう? 【ウェブカツ 】

PHP DAY 51 PHP自主練 PDOのオプションって何?

PHP自主練 / 1hour

Sep / 27.5hour

Total / 129hour

WEBサービス部の自主練用教材

 

PDOオブジェクトの[option]って何?

PHPでデータベースに接続する際に、[PDO]というオブジェクトを使用して接続していきます。

コードは大体こんな感じで。

 

$dsn = 'mysql:dbname=sample;host=localhost;charset=utf8';
$user = 'root';
$password = 'root';
$options = array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
);

$dbh = new PDO($dsn, $user, $password, $options);

いつも思っていたことがあるのですが・・・

「最後のoptionってなに?」

ということです。

 

optionの前三つの項目は分かりやすいです。

$dsn = データベースはmysqlを使って、テーブル名は「sample」、サーバーはローカルホスト、文字コードはutf-8

$user = データベースへアクセスするときのユーザー名はこれ

$password = データベースへアクセスする時のパスワードはこれ

 

$options = ・・・・何ですかこれ?

 

ってなりませんか?僕はなりました。

 

optionは文字通り、PDOのオプションを設定する。

で、このオプションですがこれは簡単にいうと、

「PDOを扱う上で、どんな挙動にしたいのかを選ぶ」

ということになります。

 

例えば、上記のコードのこの部分

  PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT,

これは「エラーモードをサイレントに変更してね」と指示をしている、ということになります。

 

「じゃあ、PDO::ATTR_ERRMODEとかERRMODE_SILENTってどこから出てきたんすか?」

ってなると思います。

 

こいつらの正体は「PHPに元々定義されている定数」です。

なので、いきなり出て来てもPHPさんに怒られず、エラーを吐くこともありません。

 

PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,

これは、下記のようなことをしてます。

 

PDO::FETCH_BOTH (デフォルト): 結果セットに返された際のカラム名と 0 で始まるカラム番号で添字を付けた配列を返す。

から、

PDO::FETCH_ASSOC: は、結果セットに 返された際のカラム名で添字を付けた配列を返す。

 

に変更しておいてね!

 

という具合です。

 

ここでどんなオプションが実用的なのかの判断をできるほど、まだ自分の経験は不足していますがコードの意味はしっかりと理解しておきたいとおもいます。

 

参考

https://qiita.com/7968/items/6f089fec8dde676abb5https://qiita.com/7968/items/6f089fec8dde676abb5b#pdo%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

https://www.php.net/manual/ja/pdo.constants.php

https://qiita.com/mpyw/items/b00b72c5c95aac573b71

 

DAY 51 PHP自主練 PDOのオプションって何?
最新情報をチェックしよう!