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

时间:2014-04-09 13:19:32

标签: 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 $data;

}

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

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

             }  

我能让foo&bar; bar返回的唯一方法就是如果我把它改成了MySQL数据库中的foo \' bar,如果可能的话我不想这样做。

2 个答案:

答案 0 :(得分:1)

你想要的功能是stripslashes mysql_real_escape_string之前的magic quotes,但你真正关心的是斜线实际来自哪里 - 看起来你可能已经开启了{{3}}。不推荐使用 - 请查看链接以获取有关禁用它的说明。

答案 1 :(得分:0)

PHP的语法要求。

例如;

   name = '$champ1'

这里有'个标签中的变量。但是这个变量包括'里面的foo' bar,转向那个。

   name = 'foo'bar'

如你所见,php无法理解那里发生了什么。因此,需要清除问题,例如在'\之前添加。插入的项目在aphostropes之前会有斜杠。

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

$theVariable = str_replace("\", "", $theVariable);

或者你可以使用PHP的高级版本的功能。与插入数据之前的stripslashes()类似。

祝你好运。