PHP7に移行した際に修正が必要だったコードまとめ

2019年6月12日PHP

さくらのレンタルサーバーにてPHP5.6からPHP7.1に移行するのにいくつかの(いくつもの)エラーを修正していかねばならない状況でした

その際、修正が必要だったコードや廃止になってるコードの代わりコードをまとめておきます

主にmysqlからmysqliへの移行コードになります

mysqlからmysqliへ移行するコード

データベースに接続

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in ~

mysqli

//DB接続
$mysqli = new mysqli('ホスト名', 'ユーザー名', 'パスワード', 'データベース名');
if ($mysqli->connect_error) {
die('Connect Error', $mysqli->error);
}

データベースを切断

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_close() in ~

mysqli

mysqli_close($mysqli);

文字コードをUFT-8に

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_set_charset() in ~

mysqli

if (!$mysqli->set_charset("utf8")) {
    error_log("Set charset Error", $mysqli->error);
    exit();
}

クエリの実行

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_query() in ~

mysqli

$str_sql = "select * from `` ORDER BY ``";
//クエリの実行
$result = $mysqli->query($str_sql);
if (!$mysqli->query($str_sql)) {
 die('Query Error', $mysqli->error);
}

結果の取得

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_fetch_array() in ~

mysqli

//結果の取得
while($dat = $result->fetch_assoc()) {
//処理
}

結果のデータ数の取得

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_num_rows() in ~

mysqli

$count = mysqli_num_rows($result);

直近のクエリで生成したIDを取得

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_insert_id() in ~

mysqli

$newID = mysqli_insert_id($mysqli);

文字列のエスケープ

エラーコード

Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in ~

mysqli

$mysqli->real_escape_string(テキストデータ);

廃止になったsplit関数の代わり

エラーコード

Deprecated: Function ereg() is deprecated in

explode()で対応する

$kekka = explode(" ", $str);

preg_split()で対応する

$kekka = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);

MySQLiデータベースへの接続と切断 | PHP倉庫

2019年6月12日PHP

Posted by Yousuke.U