如何逃避'在setParameter中

时间:2012-05-04 11:11:37

标签: php javascript

我有一个javascript函数被破坏,因为'('Côted'Azur')没有被转义:

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 );

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

('Côte d\'Azur')

("Côte d'Azur")

答案 1 :(得分:2)

听起来像是addslashes()的工作。

string addslashes ( string $str )
     

在需要的字符之前返回带反斜杠的字符串   在数据库查询等中引用。这些字符是单引号('),   双引号("),反斜杠(\)和NUL(空字节)。

     

addslashes()的示例用法是将数据输入到   数据库。例如,要将名称O'reilly插入数据库,   你需要逃脱它。强烈建议使用DBMS   特定的转义函数(例如MySQL的mysqli_real_escape_string()   或者pg_escape_string()用于PostgreSQL),但是如果您使用的是DBMS   没有转义函数,DBMS使用\来转义特殊   字符,你可以使用这个功能。这只是获取数据   进入数据库,不会插入额外的\。有PHP   指令magic_quotes_sybase设置为on将意味着'而是转义   与另一个'。

答案 2 :(得分:-1)

您可以尝试使用'替换字符串中的任何\',以便按以下方式转义它们:

$regionName = str_replace("'", "\'", $regionName);
$jsUrl->setParameter('region', $regionName );
相关问题