現在、バージョン 5.4 の PHP サーバーからバージョン 5.3 の PHP サーバーに PHP スクリプトを変換しています。
ログイン スクリプトの奇妙な動作にすぐに気付きました。
スクリプトを少し分析したところ、問題の原因がわかりました。
$result->fetch_row の最初の行のメンバーへの呼び出しは無効でした。
$result の宣言を以下に示します。
$username = $mysqli->real_escape_string(strtolower($_POST["USERNAME"]));
$password = $mysqli->real_escape_string(md5(strtolower($_POST["PASSWORD"])));
$result = $mysqli->query("SELECT * FROM $table WHERE username='$username' AND password='$password'");
ただし、本能的に、data_seek を適切に呼び出したかどうかを確認しました。私は持っていました。
fetch_row() 関数を出力すると、次の結果が得られました
配列 ( [0] => 3 [1] => 管理者 [2] => d76362b0f640fbcf869033b5e4d1c4bf [3] => 氏 [4] => ラスムス [5] => 4 [6] => [7] => 0 )
したがって、アレイは機能していました。
しかし、次の宣言は機能しませんでした。
$Title = $result->fetch_row()[3];
したがって、行全体を単一の配列オブジェクトに格納してから、すべてのサブメンバーを個別に呼び出そうとしました。
そのようです:
$row = $result->fetch_row();
$Title = $row[3];
そして、それは完璧に機能しました。
どうして?この宣言のどこが間違っていますか:
$Title = $result->fetch_row()[3];