PHPからMySQLに接続する方法

PHPからMySQLに接続する方法

mysql_db_query - Manual

先日、PHPのMySQL関数が5.5で非推奨になり、将来のバージョン(PHP6とか?)で使えなくなるという話が出ました

PHP 5.5 で mysql 拡張モジュールが非推奨になり、E_DEPRECATED エラーが表示されるようになりました。将来の PHP のバージョンで削除されます。 mysql 拡張モジュールに依存する CMS を使ってサイトを運用している場合、将来、運用サーバーに導入されている PHP のバージョンの切り替えに備えて、 mysqli もしくは PDO に対応した CMS のバージョンへのアップグレードするか、別の CMS やウェブサービスに切り替える必要があります。

PHP 5.5 で mysql 拡張モジュールが非推奨になり、将来において WordPress を筆頭にさまざまな CMS のアップグレード作業が必要になります – Sarabande.jp

なんだかこの記事への反応を見ているとPHP5.5からMySQL接続できなくなると勘違いしている人がいるみたい&未だにPHPからMySQLに接続と検索すると該当する関数を使っている人が多いようなのでmysqliでの接続例を書いておこうと思います

※そもそも、PHP5.3から関数自体非推奨になっているのでPHP5.5にしたら接続できなくなったとかはありえないと思うんですよね

必要要件

PHP バージョン 5.0.0 以降
yum等でインストールされている普通のPHPであればmysqliに対応しています
PHP: インストール手順 – Manual

phpinfoでmysqliに対応しているか確認してみてください
mysqli

ソースコード

mysql関数とほぼ同じように手続き型で接続することが可能です


ソースコード2

オブジェクト型でかつプリペアドステートメントを使えるようになったのもmysqliの特徴です

prepare("SELECT District FROM City WHERE Name=?")) {

    /* マーカにパラメータをバインドします */
    $stmt->bind_param("s", $city);

    /* クエリを実行します */
    $stmt->execute();

    /* 結果変数をバインドします */
    $stmt->bind_result($district);

    /* 値を取得します */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* ステートメントを閉じます */
    $stmt->close();
}

/* 接続を閉じます */
$mysqli->close();
?>

こちらの書き方が推奨されています

まとめ

未来のPHPで使えなくなるのはPHP: Mysql – Manual
今のPHPではまだ使えますがメンテナンスされなくなりますのでなにか脆弱性が発見されても対応されません

今後はPHP: Mysqli – Manualか、PHP: MySQL (PDO) – Manualを使用しましょう