PHP 5.6 → PHP 8.3のエラーまとめ

webサイトのサーバー移行のときにPHPのバージョンも変わった。

PHP 5.6.30 → PHP 8.3.13

このページでは、その時に出たエラーをまとめる

Warning: Undefined array key “action” in /var/www/html

未定義の配列キーを参照しようとするとき、PHP 5.6 の場合には単に Notice として表示されることが多かったが、PHP 8.3 ではより厳密になり、警告 (Warning: Undefined array key) が発生する。

このエラーを解消するには、以下のように安全に配列キーをチェックしてから参照する方法を採用する必要がある。

修正前

$action = $_GET['action'];

修正後

if (isset($_GET['action']) && $_GET['action'] === 'some_action') {
  // 特定のアクションに対応する処理
}


Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in /var/www/html/

mysql_real_escape_string() は廃止されたので、代わりに、mysqli_real_escape_string()PDO::quote() を使う必要がある。

Fatal error: Uncaught Error: Call to undefined function mysql_query() in /var/www/html/

mysql_query() は廃止されたので、代わりに、mysqli_query() や PDO を使う必要がある。

Fatal error: Uncaught Error: Call to undefined function mysql_fetch_assoc() in /var/www/html/

mysql_fetch_assoc() は廃止されたので、代わりに、mysqli_fetch_assoc() や PDO を使う必要がある。

Fatal error: Uncaught Error: Call to undefined function mysql_num_rows() in /var/www/html/

mysql_num_rows() は廃止されたので、代わりに、$result->num_rows や PDO を使う必要がある

// mysql_query("SET AUTOCOMMIT = 0"); //オートコミットを無効にする
// mysql_query("begin"); //トランザクション開始

↓↓↓↓↓↓

$db->autocommit(false); //オートコミット無効化とトランザクション開始
//mysql_query("commit"); //ここで上記二つの処理が同時に実行される

↓↓↓↓↓↓

$db->commit(); //ここで上記二つの処理が同時に実行される
タイトルとURLをコピーしました