我有这段代码(只是其中的一部分):

<?php
if(isset($_GET['act']) && $_GET['act']== 'do')  {
$key= $_POST['key'];
}
else {
$key= '';
}
?>

<input class='inputField' type='text' name='key' size=45 value='<?php echo $key;?>' >

<script>$(document).ready(function(){
key= $("#mainTop input").val();
if(key!= null || key== '%') {
    showPage(1,key);
}
else    {
    showPage(1);
}
});
</script>


showpage()将获取参数并传递到php文件:

if(isset($_GET['key'])) {
$key= addslashes($_GET['key']);
}
else {
$key= null;
}
$result= $db->query("SELECT * FROM information WHERE stuId LIKE '%$key%' OR stuName LIKE '%$key%' LIMIT  $start,10");


php文件将获取搜索关键字。我用斜杠转义键,做mysql查询来搜索。
但是,如果我使用键=%#_ +搜索,它仍然会打印我们的所有表格,而没有匹配的结果。
我想我没有以正确的方式转义键,那么如何转义%#_ +这样的字符以使用LIKE进行mysql查询呢?
请帮帮我吗?我看了另一个问题,但还是不明白

最佳答案

据我所知,#+不是LIKE匹配字符串中的特殊字符,但是您只需要escape the others

$key = str_replace(array('%', '_'), array('\%', '\_'), $key);

09-20 23:52