#概要
PHP7系以降のバージョンでは、mysql関数が使用出来ない為、mysqliクラスまたはPDOクラスの関数等で書き換える必要がある。現在多くの主要レンタルサーバ等では、標準でPHP5系が採用されており、セキュリティ等のサポート切れの問題で、PHP7系に切り替わる日がやってくることが予想されるが、今からmysql関数で記述されている部分を書き換えておけば安心である。今回はmysql関数をmysqliクラスの関数等で書き換える方法についてまとめておく。
#mysqliとは
mysqlの機能拡張版である。
mysqli = mysql + improved
#オブジェクト指向型で書き換える
手続き型(クラスを利用していない)ではなく、オブジェクト指向型(mysqliクラスをオブジェクト化して使用)での書き換えが推奨されているので、それに従い書き換える方法を示す。
#mysql関数(手続き型)
//データベースに接続
$con = mysql_connect($host, $username, $password);
if (!$con) {
error_log(mysql_error());
exit;
}
//データベースの選択
$res = mysql_select_db($dbname, $con);
if (!$res) {
error_log(mysql_error());
exit;
}
//SQLを実行
$res = mysql_query($sql, $con);
if (!$res) {
error_log(mysql_error());
exit;
}
//結果の出力
while($row = mysql_fetch_assoc($res)){
error_log(mysql_real_escape_string($row['name']));
}
//接続のクローズ
mysql_close($con);
#mysqli関数(オブジェクト指向型)
//データベースの接続と選択
$mysqli = new mysqli($host, $username, $password, $dbname);
if ($mysqli->connect_error) {
error_log($mysqli->connect_error);
exit;
}
//SQLを実行
$res = $mysqli->query($sql);
if (!$res) {
error_log($mysqli->error);
exit;
}
//結果の出力
while ($row = $res->fetch_assoc()){
error_log($mysqli->real_escape_string($row['name']));
}
//接続のクローズ
$mysqli->close();
#mysql_connect()関数&mysql_select_db()関数を書き換える
newしてmysqliオブジェクトを作成する。4番目の引数にデータベース名を指定することで、DBの接続と選択処理が一行で書ける。
$mysqli = new mysqli($host, $username, $password, $dbname)
mysql:http://php.net/manual/ja/function.mysql-connect.php
mysqli:http://php.net/manual/ja/function.mysqli-connect.php
#mysql_query()関数を書き換える
$mysqli->query($sql)
mysql:http://php.net/manual/ja/function.mysql-query.php
mysqli:http://php.net/manual/ja/mysqli.query.php
#mysql_fetch_assoc()関数を書き換える
$result = $mysqli->query($sql)
$result->fetch_assoc()
mysql:http://php.net/manual/ja/function.mysql-fetch-assoc.php
mysqli:http://php.net/manual/ja/mysqli-result.fetch-assoc.php
#mysql_error()関数を書き換える
$mysqli->error
mysql:http://php.net/manual/ja/function.mysql-error.php
mysqli:http://php.net/manual/ja/mysqli.error.php
#mysql_real_escape_string()関数を書き換える
$mysqli->real_escape_string($string)
mysql:http://php.net/manual/ja/function.mysql-real-escape-string.php
mysqli:http://php.net/manual/ja/mysqli.real-escape-string.php