2

ここ数時間、かなりばかげたエラーと格闘していました。単に登録フォームを作っているだけです。ユーザーは電子メールを入力する必要があり、メールは mysql テーブルに保存されます。(警告しなければなりません - セキュリティの問題は無視してください。すべては単なる演習です)。しかし、SQLから次のエラーが常に発生します。

SQL 構文にエラーがあります。1 行目の '@gmail.com,blqh2@gmail.com,1)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

html は次のとおりです。

      <form method="post" action="createnew.php">
            <label >user name</label>
            <input name="login_id"></br>
            <label>password</label>
            <input name="password" password></br>
                    ...some more stuff...
            <label>Privet e-mail</label>
            <input name="prv_email"></br>
            <label>Public e-mail</label>
            <input name="pub_email"></br>
            <label>Are you a reseller</label>
            <input type="checkbox" name="reseller"></br>
            <input type="submit">
        </form>

次に、PHP を使用します。

$login_id=$_POST['login_id'];
$password=$_POST['password'];
...some more stuff...
$pub_email=$_POST['pub_email'];
echo $prv_email;
echo $pub_email;
if (array_key_exists('reseller',$_POST)) {
    $reseller=1;
}
else {
    $reseller=0;
}
$sql="INSERT INTO users".
    "(login_id,password,usr_phone,region,prv_email,pub_email,reseller)".
    "VALUES".
"($login_id,$password,$usr_phone,$region,$prv_email,$pub_email,$reseller)"

そして最後に、mail フィールドの MySQL フォーマット (実際には prv_email と pub_email は同じフォーマットです)

    Field     | Type         | Collation
    ----------|--------------|-------------------  
    pub_email | varchar(255) | utf8_general_ci

私は多くのものを試しましたが、何もうまくいかないようです。常に@でクラッシュします。もう1つ-私はこのwhoコードをlocalhostで(WAMPを使用して)実行していますが、これが問題に対処するものがあるかどうかはわかりません。他の情報が必要な場合はお知らせください。ありがとうございます。

4

3 に答える 3

2

値は一重引用符 (') で囲む必要があります。次のコード スニペットを変更します。

$sql="INSERT INTO users".
    "(login_id,password,usr_phone,region,prv_email,pub_email,reseller)".    "VALUES".
    "($login_id,'$password','$usr_phone','$region','$prv_email','$pub_email','$reseller')"
于 2013-04-11T15:26:04.713 に答える
1

少なくとも、'文字列の周りに 's を追加mysql-real-escape-string()し、渡されたすべての引数に対して a を実行する必要があります。PDOまたはmysqliで準備済みステートメントを使用する方がはるかに良いでしょう

于 2013-04-11T15:28:02.850 に答える