-1

パスワード リセット メールを受信するために、ユーザーがメール アドレスを入力する必要があるフォームがあります。メールを送信する前に、メールをデータベース内の既存のメールと比較しようとしています。メールが存在しない場合、スクリプトはリセット メールを送信しません。投稿された質問/回答を読んで、何時間も頭脳をグーグルで検索し、コードを変更して空白を削除したり、構文を微調整したりしましたが、この#1064エラーメッセージを取り除くことはできません...「あきらめる...

エラーは次 のとおりです。SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の「@rocketmail.com」付近で使用する正しい構文を確認してください SQL: SELECT customer_id FROM customer WHERE customer_email = user@rocketmail.com

$sql = "SELECT customer_id FROM customer WHERE customer_email = ".$_POST['email'];
$result = mysqli_query($db, $sql) or die(mysqli_error($db)."<br />SQL: $sql");
$num_rows = mysql_num_rows($result);

if($num_rows < 1) {
$problem = TRUE;
$error_message .= '<p class="errorctr">Email was not found in our database.</p>';
}
4

3 に答える 3

0

文字列値は引用符で囲む必要があります。そうしないと、確実に構文エラーが発生します。あなたのPHP構文は問題ありませんが、MySQLはそうではありません

$sql = "SELECT customer_id FROM customer WHERE customer_email = '".mysqli_real_escape_string($db,$_POST['email'])."'";

また、コードの後半ではmysql_num_rows、次mysqli_num_rowsのようになります。

$num_rows = mysqli_num_rows($result);
于 2013-08-15T06:03:33.393 に答える
0

本当に試す必要があることといえば、それはPDOです。

$sql = "SELECT customer_id FROM customer WHERE customer_email = ?";
$stm = $pdo->prepare($sql);
$stm->execute(array($_POST['email']));
$id  = $stm->fetchColumn();
if(!$id) {
    ...
于 2013-08-15T06:27:26.750 に答える