Php 在这种情况下,如何转义单引号?

Php 在这种情况下,如何转义单引号?,php,jquery,mysql,sql,regex,Php,Jquery,Mysql,Sql,Regex,我有一个页面,它通过jquery调用api来接收多个维基百科URL。我那么 从url中提取文章名称(即从getsciencefromhttp://en.wikipedia.org/scienceetc),在每个表中添加单引号('),将它们串在一起,最后将它们发送到一个php页面,这样就可以从MyTable中选择一个mysqlselect*,其中标题位于('name1'、'name2'、'name3'、'name4')call中。当文章名中已经有一个单引号(即“希克定律”)时,问题就出现了,因为它

我有一个页面,它通过jquery调用api来接收多个维基百科URL。我那么 从url中提取文章名称(即从
get
science
from
http://en.wikipedia.org/science
etc),在每个表中添加单引号('),将它们串在一起,最后将它们发送到一个php页面,这样就可以从MyTable中选择一个mysql
select*,其中标题位于('name1'、'name2'、'name3'、'name4')
call中。当文章名中已经有一个单引号(即“希克定律”)时,问题就出现了,因为它打破了
中的
单引号。以下是我使用的代码:

$.getJSON('http://ajax.googleapis.com/ajax/services/search/web?q=keyword site:en.wikipedia.org&rsz=8&v=1.0&callback=?',
                function (r) {
                var urls1="";
                $.each(r.responseData.results, function(i, item) {
                var thisurl = (i==0) ? "'" +  item.url.substring(item.url.lastIndexOf('/') + 1) + "'" : ",'" + item.url.substring(item.url.lastIndexOf('/') + 1) + "'";
                urls1 += thisurl.replace(/_/g,'%20');

});});
$('#quotes').html($('<div>').load('pr.php?s='+urls1 +' #quotes', function() {}
但它不起作用。有什么想法吗


蒂亚

因为它的HTML内容,您应该能够用
替换
的实例。然后它将在浏览器中正确显示,但在对内容执行搜索时,您必须保持清醒,您将需要执行相同的替换(例如,“希克定律”,因为搜索词将变成“希克定律”在
WHERE
子句语句中)


PHP可能有一个用于转义HTML的内置函数,因此我建议您在自己处理此函数之前先查找它。

您不应该在客户端清理SQL查询,而应该在服务器端清理SQL查询

如果您的javascript代码生成了服务器接收到的请求,那么这些请求可能会被正确转义,但是您无法控制(也永远无法控制)从客户端发送请求的方式

e、 g:我可以在我的浏览器地址栏中显式键入一个url,其中包含我认为合适的尽可能多的引号

在php端,您可以使用mysql\u escape\u字符串:

<?
    $sanitized = array();
    foreach( $wikiPages as $page ){
        $sanitized[] = mysql_escape_string($page);
    }
    $values = "'".implode("','", $sanitized)."'";

你为什么要用JS逃跑?您应该在phpy中转义您是否通过URL传递了一半SQL语句?这听起来很糟糕,容易出错,而且完全错了。将json发送回PHP,使用json_encode/json_decode,并处理转义服务器端(例如,通过使用参数化查询)@deceze我在那里尝试了解决方案,但没有成功。我在问题中添加了更多信息。我是否正确地理解了您的问题是,当您从客户端发送带有撇号的数据时,服务器端SQL查询会中断?然后,您需要学习在服务器上正确地转义SQL查询。那不是客户的工作。
<?
    $sanitized = array();
    foreach( $wikiPages as $page ){
        $sanitized[] = mysql_escape_string($page);
    }
    $values = "'".implode("','", $sanitized)."'";