我还不确定如何说出来,但基本上我需要的是当我在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,如果可能的话我不想这样做。
答案 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()
类似。