【PHP】関数 mysql_... を mysqli_... へ書き換える。

PHPからMySQLデータベースに接続してごにょごにょする時に、mysql_connect() とかを使用した昔に書いたスクリプトを走らせると、こんな警告が出ます。

mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli

mysql_xxx は非推奨で将来のバージョンで削除されるので mysqli_xxx を使ってね … ということなので、書き換える。

例えば単純に mysql_connect() を mysqli_connect() に書き換えれば良いかと思ったら、引数が増えていたり、引数の順番が違っていたりするので結構面倒くさいのね。

<?php
  $url = 'localhost';
  $user = 'userName';
  $passwd = 'userPassWord';
  $dbName = 'databaseName';
?>

…という場合に、データベース $dbName に接続するときは、

<?php
  $dbLink = mysql_connect( $url , $user , $passwd );
  mysql_select_db( $dbName , $dbLink );
?>

…という書き方から、

<?php
  $dbLink = mysqli_connect( $url , $user , $passwd , $dbName );
?>

または、

<?php
  $dbLink = mysqli_connect( $url , $user , $passwd );
  mysqli_select_db( $dbLink , $dbName ); // 引数の順番が逆
?>

…という風に書くのだな。

で、データベースにクエリを投げる関数 mysql_query() も、

<?php
  $result = mysql_query( $sql , $dbLink );
?>

…から、

<?php
  $result = mysqli_query( $dbLink , $sql ); // 引数の順番が逆
?>

…のように書き換え。

それから、エラー文面を返してくれる mysql_error() 。mysql_error() は引数がいらないのだけれど、mysqli_error() の方は、引数にデータベースへのリンクを渡さなくてはなりません。

<?php
  echo mysqli_error( $dbLink ); // 引数が必要
?>

そうなると、「データベースへの接続に失敗した場合(上記の例で $dbLink に false が返った場合)」に mysqli_error() でエラーを補足することが出来なくなるので、そのために mysqli_connect_error() という関数(引数なし)が定義されています。

<?php
    $dbLink = mysqli_connect( $url , $user , $passwd , $dbName ) or die( mysqli_connect_error() );
?>

と、こんな感じで mysql_xxx → mysqli_xxx へ、変更作業を行うのでした。

カテゴリ: