2

ユーザーの詳細を送信した後、データベースにクエリを実行して、電子メールが既に登録されているかどうかを確認しようとしています。

ただし、次のコード (抜粋) で「厳格な標準: 変数のみを参照渡しする必要があります」というエラーが表示されます。

} else  if (isset($_POST['srSubmit']) && $_POST['srEmail']) {

    //check if email already taken
    if ($stmtreg = $mysqli->prepare("SELECT user_email FROM users WHERE user_email = ?")) {
        $stmtreg->bind_param("s", strtolower($_POST['srEmail']));
        $stmtreg->execute();
        $stmtreg->store_result();
        $num_rows = $stmtreg->num_rows();
        $stmtreg->bind_result($email);
        $stmtreg->fetch();
        $stmtreg->close();
    }

2 つの質問があります。i) このエラーが発生してもスクリプトが機能するのはなぜですか? a ii) 何が原因で、どうすれば修正できますか?

ありがとう

4

4 に答える 4

5

の一時変数をstrtolower($_POST['srEmail'])次のように設定します。

$email = strtolower($_POST['srEmail']);

に渡し$emailますbind_param。strtolower() は文字列を返しますが、変数ではないため、PDO はそれを参照できません。

于 2013-07-26T16:33:26.433 に答える
1

最初の質問には答えられませんが、参照渡しの方法は次のとおりです。

//check if email already taken
if ($stmtreg = $mysqli->prepare("SELECT user_email FROM users WHERE user_email = ?")) {
    $email = strtolower($_POST['srEmail']);
    $stmtreg->bind_param("s", &$email);
    $stmtreg->execute();
    $stmtreg->store_result();
    $num_rows = $stmtreg->num_rows();
    $stmtreg->bind_result($email);
    $stmtreg->fetch();
    $stmtreg->close();
}

&参照によって変数を渡すには、変数名の前にを付ける必要があります (例: &$email)

于 2013-07-26T16:31:07.913 に答える