使用LIKE子句的查询,在搜索字符串周围使用通配符返回所有行

时间:2019-05-23 15:52:20

标签: php mysql

当我尝试绑定$string时,它要么不返回任何结果,要么不返回我表中的所有结果。

如果我使用$string= '%' . $string . '%'$string= "%" . $string . "%" 它返回所有行。

,当我尝试不做任何修改直接绑定$string时,它根本不会返回任何结果。

我尝试使用不同的格式化技术,例如修剪和字符串替换功能,但到目前为止,对我来说没有任何作用。我正在使用PHP / 5.6.20。


    function searchPatient($string){
            $string= '%' . $string . '%';
            $stmt = $this->con->prepare("SELECT id, fname, lname, mname, sex, title, DOB FROM patient_data WHERE fname LIKE ?");
            $stmt->bind_param("s",$string);
            $stmt->execute();
            $stmt->bind_result($id, $fname, $lname, $mname, $sex, $title, $DOB);

            $pat_record = array(); 

            while($stmt->fetch()){
                $patient  = array();
                $patient['id'] = $id; 
                $patient['fname'] = $fname; 
                $patient['lname'] = $lname;
                $patient['mname'] = $mname;
                $patient['sex'] = $sex;
                $patient['title'] = $title;
                $patient['DOB'] = $DOB;         
                array_push($pat_record, $patient); 
            }
            return $pat_record; 
        }

当我用?'John'之类的实际搜索字词替换'%John%'时,它应能正常工作。有人知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

当使用LIKE子句的查询在搜索字符串周围使用通配符返回所有行时,表示搜索字符串为空。尽管有任何想法,您可能会对它的内容有所了解。这是确凿的事实,也是对这个问题的实际答案。