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';
?>
$url = 'localhost';
$user = 'userName';
$passwd = 'userPassWord';
$dbName = 'databaseName';
?>
…という場合に、データベース $dbName に接続するときは、
<?php
$dbLink = mysql_connect( $url , $user , $passwd );
mysql_select_db( $dbName , $dbLink );
?>
$dbLink = mysql_connect( $url , $user , $passwd );
mysql_select_db( $dbName , $dbLink );
?>
…という書き方から、
<?php
$dbLink = mysqli_connect( $url , $user , $passwd , $dbName );
?>
$dbLink = mysqli_connect( $url , $user , $passwd , $dbName );
?>
または、
<?php
$dbLink = mysqli_connect( $url , $user , $passwd );
mysqli_select_db( $dbLink , $dbName ); // 引数の順番が逆
?>
$dbLink = mysqli_connect( $url , $user , $passwd );
mysqli_select_db( $dbLink , $dbName ); // 引数の順番が逆
?>
…という風に書くのだな。
で、データベースにクエリを投げる関数 mysql_query() も、
<?php
$result = mysql_query( $sql , $dbLink );
?>
$result = mysql_query( $sql , $dbLink );
?>
…から、
<?php
$result = mysqli_query( $dbLink , $sql ); // 引数の順番が逆
?>
$result = mysqli_query( $dbLink , $sql ); // 引数の順番が逆
?>
…のように書き換え。
それから、エラー文面を返してくれる mysql_error() 。mysql_error() は引数がいらないのだけれど、mysqli_error() の方は、引数にデータベースへのリンクを渡さなくてはなりません。
<?php
echo mysqli_error( $dbLink ); // 引数が必要
?>
echo mysqli_error( $dbLink ); // 引数が必要
?>
そうなると、「データベースへの接続に失敗した場合(上記の例で $dbLink に false が返った場合)」に mysqli_error() でエラーを補足することが出来なくなるので、そのために mysqli_connect_error() という関数(引数なし)が定義されています。
<?php
$dbLink = mysqli_connect( $url , $user , $passwd , $dbName ) or die( mysqli_connect_error() );
?>
$dbLink = mysqli_connect( $url , $user , $passwd , $dbName ) or die( mysqli_connect_error() );
?>
と、こんな感じで mysql_xxx → mysqli_xxx へ、変更作業を行うのでした。
コメント