PHP字符串比较和搜索多表列

时间:2015-03-14 16:00:42

标签: php mysql search

这是我的第一篇文章,我遇到了PHP搜索问题。

在这里,

$searchq = $_POST['searchq'];

到目前为止为searchq提供了一个单词,如naresh,google,lamgade,然后它在数据库中搜索,但是当有多个搜索时,如

naresh lamgade同时存在这些字的错误,因为它只搜索first_name列以及我想在first_name列中搜索naresh并在{{1}中搜索lamgade }列

这是代码

last_name

问题是

在搜索栏中,当我尝试输入naresh lamgade并搜索时  

searchq =naresh+lamgade

并使用<pre> $searchq = $_POST['searchq']; $conn = mysqli_connect('localhost','root','','std_info') or die("Cant' Connect to db"); $query = mysqli_query($conn,"select * from student_details where first_name like '%$searchq%' or last_name like '%$searchq%'"); $count = mysqli_num_rows($query); if($count == 0) { echo "<br>"; echo "Can't find, try entering only first name or last name"; } else { do something`</pre> } 在first_name和last_name列中搜索,因此没有结果。

我想知道,如何打破这两个词并在这些词中搜索不同的列。

3 个答案:

答案 0 :(得分:1)

问题是 在搜索栏中,当我尝试输入naresh lamgade并搜索时

searchq =naresh+lamgade"

我猜您将文本字段放在没有method="post"的表单中 如果你这样做,请在searchq中尝试这样:

... WHERE first_name LIKE "'%'.$searchq.'%'" or last_name like "'%'.$searchq.'%');

答案 1 :(得分:0)

使用explode拆分查询。 你的代码也很危险。使用mysqli_escape_real_string来转义查询中的特殊字符:

<?php
$searchq = explode(" ", $_POST['searchq']);
$conn = mysqli_connect('localhost', 'root', '', 'std_info') or die("Cant' Connect to db");
$query = mysqli_query($conn, "select * from student_details  where (first_name like '%" . mysqli_real_escape_string($searchq[0]) . "%' OR first_name like '%" . mysqli_real_escape_string($searchq[1]) . "%') OR (last_name like '%" . mysqli_real_escape_string($searchq[1]) . "%' OR last_name like '%" . mysqli_real_escape_string($searchq[0]) . "%'");
$count = mysqli_num_rows($query);

if ($count == 0)
    {
    echo "
    ";
    echo "Can't find, try entering only first name or last name";
    }
  else
    {
    do something`

答案 2 :(得分:-1)

感谢大家的回答,但我已经使用了这个查询,它正如我想的那样完美地工作。

$query = mysqli_query($conn, "SELECT * FROM student_details WHERE CONCAT(first_name,' ',last_name) like '%$searchq%'");