-1

'('Côted'Azur')がエスケープされていないために壊れているjavascript関数があります:

Javascript:searchDay('month'、'France'、'Côted'Azur'、 '0'、 '201208'、 '18');

パラメータは次のように設定されます。

$jsUrl = new JavascriptUrl(
        "searchDay",
        array("id", "country", "region", "city" , "month",  "startDay" )
        );      

$jsUrl->setParameter("id", "month");
$jsUrl->setParameter('month', $monthCode);
$jsUrl->setParameter('country', $countryName);
$jsUrl->setParameter('region', $regionName );

どうすればこれを修正できますか?

4

3 に答える 3

2
('Côte d\'Azur')

また

("Côte d'Azur")
于 2012-05-04T11:14:19.980 に答える
2

の仕事のようですねaddslashes()

string addslashes ( string $str )

データベース クエリなどで引用する必要がある文字の前にバックスラッシュを付けた文字列を返します。これらの文字は、一重引用符 ( ')、二重引用符 ( ")、バックスラッシュ ( \)、およびNUL(NULL バイト) です。

の使用例はaddslashes()、データベースにデータを入力する場合です。たとえば、O'reilly という名前をデータベースに挿入するには、エスケープする必要があります。DBMS 固有のエスケープ関数 ( mysqli_real_escape_string()MySQL やpg_escape_string()PostgreSQL など) を使用することを強くお勧めしますが、使用している DBMS にエスケープ関数がなく、DBMS が \ を使用して特殊文字をエスケープする場合は、この関数を使用できます。これはデータベースにデータを取得するためだけのものであり、余分な \ は挿入されません。PHP ディレクティブの magic_quotes_sybase を on に設定すると、' が代わりに別の ' でエスケープされます。

于 2012-05-04T11:14:28.577 に答える
-1

次のように文字列をエスケープするために'、文字列内のいずれかを置き換えることができます。\'

$regionName = str_replace("'", "\'", $regionName);
$jsUrl->setParameter('region', $regionName );
于 2012-05-04T11:16:10.733 に答える