0

HTMLフォームがあります。フォームを送信すると、次のエラー メッセージが表示されます。

エラーメッセージ:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near 'm ok. ', 'point of interest', 
'91354857', '6546564654', '2 Person', '25', 'engl' at line 1 

Mysql クエリ:

$insert = mysql_query("INSERT INTO host_signup VALUES('', '$uname', '$f_name', 
'$pr_lname', '$email', '$hashpass', '$title', '$country', '$city', '$state', 
'$postalcode', '$address', '$final_neighbor', '$landline', '$mobileph', '$capacity', 
'$age', '$language', '$final_interest', '$news', '$ip', '$dof', '0' )");

実際には、変数を入れるとエラーメッセージが表示されますが、バックスラッシュが表示stripslashes()されません。stripslashes()

例えば:

$address = $_POST['address'];       
$address = stripslashes($address);
4

3 に答える 3

1

SQL 値をクエリに入れる前にエスケープする必要があります。'あなたの文字列の1つにmysqlがそれをカットしたように見えますか? 'm ok. 'それが「私は大丈夫です」の終わりだと思います。

その文字列はi\'m ok..

于 2013-03-30T03:57:03.730 に答える
0

他の人が示唆しているように、 --notmysql_real_escape_string()使用する必要があります addslashes()

addslashes()ドキュメントは同意します:

DBMS 固有のエスケープ関数 (MySQL の場合は mysqli_real_escape_string()、PostgreSQL の場合は pg_escape_string() など) を使用することを強くお勧めしますが、使用している DBMS にエスケープ関数がなく、DBMS が \ を使用して特殊文字をエスケープする場合は、この機能を使用できます。

于 2013-03-30T04:20:13.370 に答える