PHP-不要在MySQL查询中使用“\”

PHP-不要在MySQL查询中使用“\”,php,mysql,sql,Php,Mysql,Sql,我不确定该如何使用这个词,但本质上我需要的是,当我在MySQL中发送一个SELECT查询时,它不会注意搜索中的转义字符。例如,如果我正在搜索的名称是foo'bar,并且我将foo'bar发送给服务器,是否有方法使服务器找到foo'bar?这是当前的MySQL查询: function escape_data($data) { $data = mysql_escape_string (trim($data)); $data = strip_tags($data); return

我不确定该如何使用这个词,但本质上我需要的是,当我在MySQL中发送一个SELECT查询时,它不会注意搜索中的转义字符。例如,如果我正在搜索的名称是foo'bar,并且我将foo'bar发送给服务器,是否有方法使服务器找到foo'bar?这是当前的MySQL查询:

function escape_data($data) {


    $data = mysql_escape_string (trim($data));
    $data = strip_tags($data);

return $data;

}

$champ1 = escape_data($_GET['champ1']);

 foreach($db->query("SELECT * FROM champs WHERE name = '$champ1'") as $row) {
                $role_verify_1 = $row[$role];

             }  

我能让foo'bar返回的唯一方法是在MySQL数据库中将其更改为foo'bar,如果可能的话,我不想这样做。

您想要的函数在MySQL\u real\u escape\u string之前,但是您真正关心的应该是斜杠的实际来源-看起来您可能已经打开了。这是不推荐使用的-请查看链接以获取有关禁用它的说明。

PHP的语法要求这样做

比如,

   name = '$champ1'
在标签中有一个变量。但这个变量包括“像foo一样的内部”吧,轮到它了

   name = 'foo'bar'
正如您所看到的,php无法理解那里发生了什么。因此,需要解决这个问题,比如在“an”之前添加。插入的项目将在无斜线前有斜线

作为一种解决方案,您可以在回显变量之前删除反斜杠

$theVariable = str_replace("\", "", $theVariable);
也可以使用PHP的更高版本的函数。就像插入数据前的斜杠一样


祝你好运。

可能想修复你的打字错误。你以前是调用addslashes还是使用早已弃用的please don't-use-in-modern-code magic\u quotes\u gpc?可以在mysql\u real\u escape\u字符串之前应用,但最好修复数据源…切换到准备好的语句可能是最好的选择,但我的意见无效,所以请继续。