gpt4 book ai didi

PHP多关键字搜索功能

转载 作者:行者123 更新时间:2023-11-29 08:07:23 24 4
gpt4 key购买 nike

我创建了一个搜索栏,用户可以在其中输入关键字,并且表单 php 代码将输入分解为单词数组。然后,我使用 foreach 循环遍历单词列表并在数据库的两个表中搜索匹配短语。

主要功能如下:

  • 支持多词输入
  • 如果用户不是管理员,则仅搜索“ecom_products”表
  • 如果用户以管理员身份登录,则搜索“ecom_products”表和“ecom_users”表,其中仅返回其他管理员详细信息(而不是客户信息)

大约两周前一切正常,但现在由于某种原因,当我以管理员身份登录时搜索多个关键字时,它会抛出错误。我已经广泛检查了我的代码,并尝试对其进行更改,但它仍然不起作用。下面是我看到的 mysql_error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR fname LIKE '%string%' OR lname LIKE '%string%' OR email LIKE '%string%' OR ma' at line 1

下面是我的代码:

if(empty($_POST)=== false){
require ('core/dbconnection.php');
$output = '';
$error = '';
$input = mysql_real_escape_string($_POST['search_input']);
$i=0;
if($input){
$keyword = explode(" ", $input);
if($admin == 1){
//If a user is logged in and the user is an Admin.
$search_items = "SELECT * FROM ecom_products WHERE ";
$search_users = "SELECT * FROM ecom_users WHERE ";
foreach($keyword as $k){
$k = mysql_real_escape_string($k);
$i++;
if($i == 1){
$search_items .= "name LIKE '%$k%' OR description LIKE '%$k%'";
$search_users .= "is_admin='1' AND (fname LIKE '%$k%' OR lname LIKE '%$k%' OR email LIKE '%$k%' OR main_tel LIKE '%$k%'";
}else{
$search_items .= " OR name LIKE '%$k%' OR description LIKE '%$k%'";
$search_users .= " OR fname LIKE '%$k%' OR lname LIKE '%$k%' OR email LIKE '%$k%' OR main_tel LIKE '%$k%'";
}
$search_users .= ") ORDER BY lname DESC";
}
PS。我正在将所有“msql”扩展更新为“mysqli”,事实上我尝试了 mysqli,它甚至没有运行查询,所以我想在更改我的 mysql 扩展之前解决这个问题。非常感谢您的帮助

最佳答案

你需要移动

$search_users .= ") ORDER BY lname DESC";

foreach($keyword as $k)循环之外。现在它在每个循环的末尾添加,因此您的查询将如下所示

SELECT * FROM ecom_users WHERE 
is_admin='1' AND (fname LIKE '%$k%' OR lname LIKE '%$k%' OR email LIKE '%$k%' OR main_tel LIKE '%$k%'
) ORDER BY lname DESC
OR fname LIKE '%$k%' OR lname LIKE '%$k%' OR email LIKE '%$k%' OR main_tel LIKE '%$k%'
) ORDER BY lname DESC

应该是

foreach($keyword as $k){
$k = mysql_real_escape_string($k);
$i++;
if($i == 1){
$search_items .= "name LIKE '%$k%' OR description LIKE '%$k%'";
$search_users .= "is_admin='1' AND (fname LIKE '%$k%' OR lname LIKE '%$k%' OR email LIKE '%$k%' OR main_tel LIKE '%$k%'";
}else{
$search_items .= " OR name LIKE '%$k%' OR description LIKE '%$k%'";
$search_users .= " OR fname LIKE '%$k%' OR lname LIKE '%$k%' OR email LIKE '%$k%' OR main_tel LIKE '%$k%'";
}
// REMOVE FROM HERE
}
// PLACE HERE
$search_users .= ") ORDER BY lname DESC";

关于PHP多关键字搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com