PHPのMySQL文を使ってデータベースへ接続

今回は、PHPのお話です。
私自身、PHP7系から入っているので、そこまで困った感じはないのですが、昔からたくさんのサーバープログラムを作られている先輩方は、PHP5系からPHP7系に変わったことで、相当大変だろうなって感じがしています。

先輩方には、頭が上がりません。

なんのことか分からないですよね(笑)

MySQL文のお話ですが、大きな違いとしては、mysql→mysqliにしないといけないことかと思います。(まだまだ、他にもありますが)

まずは、PHP5系の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;
}

//行数を取得する
$num_rows = mysql_num_rows($result);

//結果の出力(数値配列)
while($row = mysql_fetch_array($result)){
  print $row0[0];
}

//結果の出力(連想配列)
while($row = mysql_fetch_assoc($res)){
    error_log(mysql_real_escape_string($row['name']));
}

//接続のクローズ
mysql_close($con);

となりますが、これが、PHP7系のmysql関数(オブジェクト指向型)だと、

//データベースの接続と選択
$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;
}

//行数を取得する
$num_rows = $result->num_rows;

//結果の出力(数値配列)
while($row = $result->fetch_array(MYSQLI_NUM)){
  print $row0[0];
}

//結果の出力
while ($row = $res->fetch_assoc()){
    error_log($mysqli->real_escape_string($row['name']));
}

//接続のクローズ
$mysqli->close();

という感じになります。

mysqlのところを全てmysqliに変えないといけないんですね。大きな設計・構築をされている場合は、これ大変だろうなーって思ってます。
ま、PDOのやり方なら、問題ないんでしょうけど。

コメントを残す