2

以下のエラーが表示されます。これは、変数5'10 - (178cm)によって渡される挿入文字列にある引用符の一部であると考えています。$en['height']このエラーを処理する最善の方法は何ですか?

エラー: SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルを参照して、12 行目の「10 - (178cm)」付近で使用する正しい構文を確認してください。m_btype = 'Rather Not Say'

これはmysqlの挿入です:

m_height = '".$en['height']."',

テーブルは次のように設定されます。

varchar(30) latin1_swedish_ci
4

1 に答える 1

4

問題は、文字列を SQL クエリに入力する前に「エスケープ」する必要があることです。そうしないと、引用符を入力してクエリを変更できるようになります。次の文字列を入力した場合の例:

'; select * from users; --

意図しない SQL が実行される可能性があります。解決策はエスケープすることです:

m_height = '".mysql_real_escape_string($en['height'])."',

または、PDO や mysqli 関数など、mysql をクエリする最新の方法を使用することをお勧めします。

編集また、より一般的な構文エラーがあると思います。これを試して:

m_height = "'".mysql_real_escape_string($en['height'])."'",
于 2013-09-03T19:28:22.550 に答える