2011-07-25 7 views
0

私はmysqlを使用しています。プロジェクトには、ユーザー編集用のフィールドがあります。名前のような文字が含まれている場合、レコードを保存するときにアポストロフィの前に '\'文字がアトミックに挿入され、名前はxyzになります。次回は、保存中に別の文字を挿入し、名前がxyzになります。 解決策はありますか?おかげさまで アポストロフィの問題

答えて

4

magic_quotesディレクティブがオンになっている可能性があります(そうしないでください)。引用符の前に自動的にバックスラッシュを追加するので、mysql_real_escape_stringを使用している場合は、二度追加されます。あなたがmysql_real_escape_stringを使用していない場合は、well..just shame on you!

function escape($field) 
{ 
if(magic_quotes_gpc()) 
{ 
    $field = mysql_real_escape_string(stripslashes($field)); 
} 
else 
{ 
    $field = mysql_real_escape_string($field); 
} 
} 

は、それからちょうど((関数を呼び出す前にオープン接続を持っているようにしてください、またはmysql_real_escape_stringの)FALSEを返します)

$name = escape($_POST['name']); 

それとも単にあなたからPHP iniファイルを、それをオフを行います

ini_set('magic_quotes_gpc',0); 

さらにを使用すると、prepared statementsを使用して、エスケープとSQLインジェクションについて心配する必要はありません!

0

マジッククォートがオンになっています。

マニュアルセクションのを参照してください。

関連する問題