1

「@」を含む文字列を実行すると、mySQL クエリが動かなくなります。私は htmlentities() と htmlspecialchars() を無駄にしようとしました。これが私が実行しているものです:

    $name=$_POST['name'];
$first=$_POST['first'];
$last=$_POST['last'];
$bio=htmlentities($_POST['bio']);
$email=htmlentities($_POST['email']);
$pass=$_POST['pass'];
$date=date("m/d/y");
$bd=date('m-d-y',strtotime($_POST['month'].$_POST['date'].$_POST['year']));
$qer="insert into everything (user,first,last,bio,email,pass,date,bd) values ($name,$first,$last,$bio,$email,$pass,$date,$bd)";
if(!(mysql_query($qer,$con))){
    echo "no qer";
    echo mysql_error();
}

エラーは次のとおりです。

SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の '@re5yhgr5tyhrtyhr5tyr5tyhrt,test@first.com,pass,12/13/12,01-01-70)' 付近で使用する正しい構文を確認してください。

最初はメール パラメータだけで試していましたが、どこにいても問題があることがわかりました。>:|

私の実際の行1は「」であるため、「行1」はSQLの最初の行であると想定しています...

これが明らかな場合は申し訳ありませんが、事前に感謝します!

4

3 に答える 3

3

のデータ型の値を挿入する場合は、一重引用符で囲むstring必要があります。(数値でない限り、Date、Time、DateTimeなどについても

$qer="insert into everything (user, first, last, bio, email, pass, date, bd) 
      values ('$name', '$first', '$last', ...)";

しかし、上記のクエリは で脆弱ですSQL InjectionSQL Injection

于 2012-12-13T03:44:38.740 に答える
2

試行: varchar、char、または date 型のフィールドにアポストロフィ (') を追加します。

 ...values ('$name','$first','$last','$bio','$email','$pass','$date','$bd')...
于 2012-12-13T03:45:56.850 に答える
0

次のように、insert sql の引数を文字列内にラップする必要があります。"test@first.com"

于 2012-12-13T03:45:03.420 に答える