webサイトのサーバー移行のときにPHPのバージョンも変わった。
PHP 5.6.30 → PHP 8.3.13
このページでは、その時に出たエラーをまとめる
- Warning: Undefined array key “action” in /var/www/html
- Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in /var/www/html/
- Fatal error: Uncaught Error: Call to undefined function mysql_query() in /var/www/html/
- Fatal error: Uncaught Error: Call to undefined function mysql_fetch_assoc() in /var/www/html/
- Fatal error: Uncaught Error: Call to undefined function mysql_num_rows() in /var/www/html/
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(); //ここで上記二つの処理が同時に実行される