PHP7に移行した際に修正が必要だったコードまとめ
さくらのレンタルサーバーにて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);
ディスカッション
コメント一覧
まだ、コメントがありません