次のコードでは、2 つのクエリを実行します。1 つはデータベースからユーザーの姓名を取得するクエリで、もう 1 つはデータベース内の同じエントリの別のフィールドに書き込むクエリです。最初のクエリは結果を生成しません (また、$rowCount 行とその下の行のコメントを外すと、スクリプトは 100% の確率でそこで中止されます)。2 番目のクエリは完全に機能します。
誰もが理由について理論を持っていますか?
$db = new mysqli($db_host, $db_user, $db_pass, $db_name, $db_port);
$user = get_post_var('email');
$user = preg_replace('/[^A-Za-z0-9@._-]/', '', $user);
$code = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 20);
($stmt = $db->prepare('select first, last from users where user = ?'));
$stmt->bind_param('s', $user);
$stmt->execute();
$stmt->bind_result($first,$last);
//$rowCount = mysqli_num_rows($stmt);
//if($rowCount == 0) { fail("19","forgot"); } else {}
$stmt->close();
($stmt = $db->prepare('update users set reset = ? where user = ?'));
$stmt->bind_param('ss', $code, $user);
$stmt->execute();
$stmt->close();
mail( "$user", "Example.org Password Reset Code", "Dear $first $last,\n\n Please visit the following url to reset your password:\n http://www.example.org/reset.php?c=$code\n\nSincerely,\nSender", "From: noreply@example.org" );
fail('18',"forgot");
$db->close();