mysqlとmysqli

これはPHPでプログラムを作っている方向けの情報です。

前回、PHPの新バージョンへの移行 (migration) に関して書いたついでに、今回は mysqlmysqli について書きます。

PHPからデータベースに接続するときにはmysqliなどを使います。
古いプログラムだとmysqlを使っているかもしれませんが、
PHP 5.5.x から mysqlは非推奨の機能になります。

非推奨と削除は違いますので、
将来は消えるかもしれませんが、とりあえず使えます。
とはえいえ、将来的にそなえるならmysqliでプログラムするべきです。

PHPからデータベースへの接続サンプルを検索すると
mysqlを使ったサンプルが目についてしまうので、
ここではmysqliを使ったサンプルを例示しておきます。

データベースへの接続 (推奨)

以下のようにmysqliを使うと良いと思います。
ちなみにdeb_serverの後にある3306はポートです。
通常は3306でOKですが、もしイレギュラーなデータベースサーバなら別の番号になります。

// DB接続テスト (mysqli)
$link = mysqli_connect('db_server:3306', 'db_user', 'password');
if (mysqli_connect_errno()) {
die('接続できませんでした: ' . mysqli_connect_error());
}
echo '接続に成功しました';
mysqli_close($link);

データベースへの接続 (非推奨)

なお、以下のようにmysqlを使うのはお勧めできません。
何年後かに使えなくなる恐れがあります。

// DB接続テスト (mysql)
$link = mysql_connect('db_server:3306', 'db_user', 'password');
if (!$link) {
die('接続できませんでした: ' . mysql_error());
}
echo '接続に成功しました';
mysql_close($link);

PHP 5.2.x から PHP 5.3.x への移行で困ったとき

PHP 5.2.x から PHP 5.3.x への移行では、以下のようにデータベース接続のパスワードフォーマットの扱いが変更されます。そのため、今まで接続できたデータベースに突然接続できなくなるかもしれません。

新しい mysqlnd ライブラリは、MySQL 4.1 用の41バイトの新しいパスワードフォーマットを使用します。古い16バイトのパスワードを使うと、mysql_connect()系の関数は次のようなエラーメッセージを生成します。“mysqlnd cannot connect to MySQL 4.1+ using old authentication”

そんなときは、先に例示したサンプルを使ってデータベースの接続を試してみて下さい。
接続できなければ、コントロールパネルからパスワードを再設定するなど、新しいパスワードフォーマットへ変更する必要があるでしょう。

おまけ

mysqliに対応しているかどうかはphpinfoでわかります。
このサーバ、まさか mysqli に対応してないというときにはこれで。

お問い合わせについて

業務として技術コンサルティングやシステム設計・開発を行っております。
気になることがありましたらご相談下さい。
ご相談のみで完結する場合、コンサルティング費用の目安は
内容によりますが1時間で5千円〜1万円ていどです。
コンサルティングや開発を検討されるその前に、
まずはお気軽にコメントやメールでご連絡下さい。
※ご契約前のコメントやメールでのやりとりは無料です。

お問い合わせフォーム

お急ぎの場合など、ただちに業務対応が必要な場合は、こちらのお問い合わせフォームをご利用ください。かきしちカンパニーお客様窓口が直ちに対応いたします。
※窓口へのお問い合わせ、お見積もりは無料です。


お名前 (必須)

メールアドレス (必須)

題名

メッセージ本文 (必須)

Share

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*