[docker]PHPからMySQLに接続したい

テクノロジー・ガジェット

PHPからMySQLに接続する方法をメモに残します。

MySQLを使う流れ

PHPからデータ登録、取得する際もMySQLに接続が必要

MySQLに接続

PHPからMySQLに接続する方法

MySQLに命令

テーブルにデータを登録

PHPからMySQLに対してSQL文を実行する方法

テーブルからデータを取得

MySQLを切断

MySQLとの接続を切断する

PHPからMySQLに接続する方法

いくつか方法があるのですが、今回はMySQLiを使います。

mysqli_connect関数を使用します。

mysqli_connect('my_host','my_user','my_password','my_db')

コード例:

mysqli_connect('db','book_log','pass','book_log')

MySQLに接続できなかった場合の対策

MySQLに接続できないケースが想定されるので事前に対策を行っておく。

MySQLに接続できない場合はFALSEを返してアプリケーションを終了させる。

$link = mysqli_connect('db','book_log','pass','db')
if(!$link){
  echo 'Error:データベースに接続できません' . PHP_EOL;
  echo 'Debugging error:' . mysqli_connect_error() . PHP_EOL;
  exit;
}

4行目のechoは本来はログに出力するのが望ましい。

MySQLとの接続を切断する

MySQLを使い終わったら切断します。

mysql_close($link)

実際はアプリケーション終了時に切断されるが、明示的に切っておくことをおすすめします。

PHPからMySQLに対してSQL文を実行する方法

INSERT文を使い1行のデータを登録する

  • $link : mysqli_connect()が返すリンクID
  • $query : SQL文の文字列
mysqli_query($link, $query)

コード例:

$link = mysqli_connect('db', 'book_log', 'pass', 'book_log');
$sql = "INSERT INTO companies(name) VALUES ('SmartHR inc')";
mysqli_query($link, $sql);

SQL実行時にエラーがあった場合

mysqli_query($link, $sql)を実行時にエラーがあった場合FALSEが返ることを利用する

$link = mysqli_connect('db', 'book_log', 'pass', 'book_log');
$sql = "INSERT INTO companies(name) VALUES ('SmartHR inc')";
$result = mysqli_query($link, $sql);
if ($result) {
  echo 'レコードが追加されました' . PHP_EOL;
} else {
  echo 'レコードの追加に失敗しました' . PHP_EOL;
  echo 'Debugging error:' . mysqli_error($link) . PHP_EOL;
}

PHPで文字列が複数行になるとき

ヒアドキュメントを使用する

$sql =<<<EOT   # <- <<<ID
INSERT INTO companies(
  name
) VALUES (       #複数行のコメント
  'SmartHR inc'
)
EOT;        #ID インデントしてはダメ

コメント