Home >Backend Development >PHP Tutorial >新手求教!关于搜索的一个问题

新手求教!关于搜索的一个问题

WBOY
WBOYOriginal
2016-06-23 14:24:35878browse

自学php,做搜索框时遇到个问题,当我输入搜索的字符串只要是空格开头后面随便什么都可以,他都就会把表里全部数据都显示出来,弄了半天不明白是什么问题,额,代码是这样的
if(isset($_GET['sousuok'])){
    if(ctype_space($_GET['sousuok'])){
    echo "非法数据!";
    }else{
    $s=explode(" ",$_GET['sousuok']);
    require_once '../connvar.php';
    $dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
    mysql_query("SET NAMES 'UTF8'");
    $exec="select * from cangku where name like '%$s[0]%' or '%$s[1]%';";
$result=mysqli_query($dbc,$exec);
if(mysqli_num_rows($result)>0){
while($rs=mysqli_fetch_object($result)){
$name=$rs->name;
$tu=$rs->biaoqiantu;
echo "

".$name."新手求教!关于搜索的一个问题"."

";
};
echo mysqli_num_rows($result);
}else{
    echo mysqli_num_rows($result);
    echo "没有找到!";
    };
        mysqli_free_result();//释放内存
        mysqli_close();//断开数据库
    }
}

?>

回复讨论(解决方案)

$s=explode(" ",$_GET['sousuok']);
如果 $_GET['sousuok'] 以空格开头,那么 $s[0] 就是空串
于是 $exec="select * from cangku where name like '%$s[0]%' or '%$s[1]%';";
就变成 $exec="select * from cangku where name like '%%' or '%查询字%';";
name like '%%' 总是会成立的,自然就是全部内容了

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn