Php 在这种情况下,如何转义单引号?
我有一个页面,它通过jquery调用api来接收多个维基百科URL。我那么 从url中提取文章名称(即从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中。当文章名中已经有一个单引号(即“希克定律”)时,问题就出现了,因为它
getscience
fromhttp://en.wikipedia.org/science
etc),在每个表中添加单引号('),将它们串在一起,最后将它们发送到一个php页面,这样就可以从MyTable中选择一个mysqlselect*,其中标题位于('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)."'";