PHP 字符串比较并在多个 table 列中搜索
PHP string compare and search in a multiple table column
这是我的第一个 post,我的 PHP 搜索有问题。
这里,
$searchq = $_POST['searchq'];
到目前为止,当像 naresh、google 一样为 searchq 提供单个词时,lamgade 然后它在数据库中搜索,但是当有多个搜索时,如
naresh lamgade
同时这些词有错误,因为它只在 first_name 列中搜索,而我想在 first_name
列和 lamgade 中搜索 naresh在 last_name
列中
这是代码
<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>
}
问题是
在搜索栏中,当我尝试输入 naresh lamgade 并进行搜索时
searchq =naresh+lamgade
并在 first_name 和 last_name 列中使用 naresh+lamgade
进行搜索,因此没有结果。
我想知道,如何将这两个词分开,并用这些词在不同的列中搜索。
使用 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`
问题是
在搜索栏中,当我尝试输入 naresh lamgade 并进行搜索时
searchq =naresh+lamgade"
我猜你将文本字段放在没有 method="post"
的表单中。
如果这样做,请在 searchq 中这样尝试:
... WHERE first_name LIKE "'%'.$searchq.'%'" or last_name like "'%'.$searchq.'%');
感谢大家的回答,但我已经使用了这个查询,它运行得很好,正如我想要的那样。
$query = mysqli_query($conn, "SELECT * FROM student_details WHERE CONCAT(first_name,' ',last_name) like '%$searchq%'");
这是我的第一个 post,我的 PHP 搜索有问题。
这里,
$searchq = $_POST['searchq'];
到目前为止,当像 naresh、google 一样为 searchq 提供单个词时,lamgade 然后它在数据库中搜索,但是当有多个搜索时,如
naresh lamgade
同时这些词有错误,因为它只在 first_name 列中搜索,而我想在 first_name
列和 lamgade 中搜索 naresh在 last_name
列中
这是代码
<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>
}
问题是
在搜索栏中,当我尝试输入 naresh lamgade 并进行搜索时
searchq =naresh+lamgade
并在 first_name 和 last_name 列中使用 naresh+lamgade
进行搜索,因此没有结果。
我想知道,如何将这两个词分开,并用这些词在不同的列中搜索。
使用 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`
问题是
在搜索栏中,当我尝试输入 naresh lamgade 并进行搜索时
searchq =naresh+lamgade"
我猜你将文本字段放在没有 method="post"
的表单中。
如果这样做,请在 searchq 中这样尝试:
... WHERE first_name LIKE "'%'.$searchq.'%'" or last_name like "'%'.$searchq.'%');
感谢大家的回答,但我已经使用了这个查询,它运行得很好,正如我想要的那样。
$query = mysqli_query($conn, "SELECT * FROM student_details WHERE CONCAT(first_name,' ',last_name) like '%$searchq%'");