-1

私が取り組んでいたプロジェクトを検索していました。誰かが用語を検索すると、MySQL データベースに保存されます。特殊文字をエスケープするために使用mysql_real_escape_stringしていますが、特殊文字は例としてデータベースに保存されています

Don\'tにならないで

それから私はそれを試しhtmlspecialcharsてみましたが、それでも同じです。私もdbを変更して、utf8_general_ciすべて一緒に試しました。

ここにコードがあります

$addSearch = htmlspecialchars($search);
$addSearch1 = mysql_real_escape_string($addSearch);
mysql_query("INSERT INTO search (term) VALUES('$addSearch1') ") 
or die(mysql_error());  

誰でもこれに対する解決策を教えてもらえますか。前もって感謝します。

4

4 に答える 4

1

PHP の設定 (php.ini) をチェックして、「マジック クォート」が有効になっているかどうかを確認することをお勧めします。その場合は、それらをオフにして、Web サービスを再起動してください。詳細はこちら

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

.htaccess編集できない場合は、代わりにファイルでこれを使用できphp.iniます。

php_flag magic_quotes_gpc Off
于 2013-01-25T04:55:37.647 に答える
1

この正規表現を使用して、文字列から特殊文字を削除します

$addSearch = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $search);
mysql_query("INSERT INTO search (term) VALUES('$addSearch') ") or die(mysql_error()); 

mysqliorpdoの代わりに使用mysqlします。これは非推奨であり、将来削除される可能性があるためです。

于 2013-01-25T04:53:40.957 に答える
1

このようにしてみてください....

$height='aA1`';
$value=preg_replace("/[^\`a-z,. \'\-\d]/i", "", $height);
$value=mysql_real_escape_string($value);
mysql_query("INSERT INTO `table` SET `column`='$value'") or die(mysql_error());
于 2013-01-25T05:11:10.743 に答える
0

実際、これを行うには多くの方法があります。目に見えない何かが間違っているのかもしれません。

$str = addslashes($str);
$str = addcslashes($str, "'\"");
$str = str_replace(array("'", '"'), array("\\'", '\\"'), $str);
$str = preg_replace("~([\"'])~", "\\\\1", $str);
于 2013-01-25T04:57:49.280 に答える