Php Where to place Where子句限制搜索引擎

Php Where to place Where子句限制搜索引擎,php,mysql,where,Php,Mysql,Where,我有问题限制搜索引擎只显示与用户相关的数据($comp_id)。我知道WHERE子句需要在那里的某个地方,我只是不知道在哪里。请帮忙!谢谢 "SELECT * FROM products " . "WHERE item_id LIKE '%".$keywords[$i]."%'". " OR item_name LIKE '%".$keywords[$i]."%'" . " OR class LIKE '%".$keywords[$i]."%'" . " ORDER BY item_name";

我有问题限制搜索引擎只显示与用户相关的数据($comp_id)。我知道WHERE子句需要在那里的某个地方,我只是不知道在哪里。请帮忙!谢谢

"SELECT * FROM products " .
"WHERE item_id LIKE '%".$keywords[$i]."%'".
" OR item_name LIKE '%".$keywords[$i]."%'" .
" OR class LIKE '%".$keywords[$i]."%'" .
" ORDER BY item_name";

它是否在第一个WHERE子句之后?

语句中已经有WHERE子句,但缺少一个将结果限制为特定用户的参数

由于数据库架构不存在,我们假设表中有一个名为“user\u id”的字段表示用户的唯一id。我们还假设“user\u id”是一个整数。在这种情况下,SQL语句如下所示:

"SELECT * FROM products " .
"WHERE item_id LIKE '%".$keywords[$i]."%'".
" OR item_name LIKE '%".$keywords[$i]."%'" .
" OR class LIKE '%".$keywords[$i]."%'" .
" AND user_id = " . $comp_id .
" ORDER BY item_name";
在该语句中,我们有一个AND子句,它是任何匹配所必需的,并且表示“user\u id”必须与
$comp\u id
变量中的值匹配


这仅在
产品
表包含与用户相关的条目且存在供您查询的字段时有效。如果表格结构更复杂,这将不起作用,您可能需要修改您的问题以包含更多数据。

您可能需要以下内容:

SELECT 
  *
FROM
  products 
WHERE
  (
  item_id LIKE '%".$keywords[$i]."%' OR
  item_name LIKE '%".$keywords[$i]."%' OR
  class LIKE '%".$keywords[$i]."%'
  )
  AND
  user = $comp_id
ORDER BY
  item_name
关键字的搜索在括号中,因此它将在括号中查找所有内容,因为每个条件都是OR。 括号外的和将其与OR查询分开


因此,括号中的任何内容都匹配,即如果A=b或c=d或其他内容=任何内容,则明确表示括号中匹配的内容为真,用户名也为特定内容=真。

看起来您已经从James那里得到了答案。由于看起来像是从用户输入中获取关键字,请确保转义查询,否则您将进入一个SQL注入()的世界。

因为And/or运算符是按照外观或组子句的顺序计算的

"SELECT * FROM products " .
"WHERE user_id = '". $comp_id."' ".
" AND (item_id LIKE '%".$keywords[$i]."%'".
" OR item_name LIKE '%".$keywords[$i]."%'".
" OR class LIKE '%".$keywords[$i]."%')".
" ORDER BY item_name";

你不是已经有WHERE子句了吗?你必须在你现有的WHERE子句中附加一个AND条件。啊,我明白了。非常感谢您的修复和解释!