PHP中搜索查询的问题
我在PHP中有一个搜索查询,您可以在用户数据库中进行搜索。重要的是,只有连接到一个特定ID(w_ID)的用户才会显示。每个用户都有一个。换句话说,我不希望其他管理员看到不属于搜索者的客户端 因此,我为每个用户指定了一个w_id。 我的问题是,我的查询似乎忽略了这一点 这是我的密码PHP中搜索查询的问题,php,Php,我在PHP中有一个搜索查询,您可以在用户数据库中进行搜索。重要的是,只有连接到一个特定ID(w_ID)的用户才会显示。每个用户都有一个。换句话说,我不希望其他管理员看到不属于搜索者的客户端 因此,我为每个用户指定了一个w_id。 我的问题是,我的查询似乎忽略了这一点 这是我的密码 $raw_search_results = mysqli_query($con,"SELECT * FROM customers WHERE (`firstname` LIKE '%".$search."%
$raw_search_results = mysqli_query($con,"SELECT * FROM customers
WHERE (`firstname` LIKE '%".$search."%')
OR (`lastname` LIKE '%".$search."%')
OR (`adress` LIKE '%".$search."%')
OR (`email` LIKE '%".$search."%') AND w_id='$webshop_info[w_id]' limit 0,50")
or die(mysqli_error());
此代码显示具有w\u id
4、3、6等的所有用户,但应仅显示具有1的用户,因为$webshop\u info[w\u id]
定义为1
有什么建议吗?将查询更改为:
SELECT *
FROM customers
WHERE ((`firstname` LIKE '%".$search."%')
OR (`lastname` LIKE '%".$search."%')
OR (`adress` LIKE '%".$search."%')
OR (`email` LIKE '%".$search."%'))
AND (w_id='$webshop_info[w_id]') LIMIT 0, 50
注意其中((条件1)或(条件2))和(条件)
请注意,您的代码容易受到SQL注入攻击,请与干系人一起使用准备好的查询
例如:(请不要复制此代码,此代码仅供解释)
将查询更改为:
SELECT *
FROM customers
WHERE ((`firstname` LIKE '%".$search."%')
OR (`lastname` LIKE '%".$search."%')
OR (`adress` LIKE '%".$search."%')
OR (`email` LIKE '%".$search."%'))
AND (w_id='$webshop_info[w_id]') LIMIT 0, 50
注意其中((条件1)或(条件2))和(条件)
请注意,您的代码容易受到SQL注入攻击,请与干系人一起使用准备好的查询
例如:(请不要复制此代码,此代码仅供解释)
使用括号将所有“或”语句分组:
SELECT * FROM customers WHERE (... OR ... OR ...) AND ...
您可以阅读有关运算符优先级的更多信息。使用括号将所有“或”语句分组:
SELECT * FROM customers WHERE (... OR ... OR ...) AND ...
您可以阅读有关运算符优先级的更多信息。尝试以下操作:
SELECT *
FROM customers
WHERE ((`firstname` LIKE '%".$search."%')
OR (`lastname` LIKE '%".$search."%')
OR (`adress` LIKE '%".$search."%')
OR (`email` LIKE '%".$search."%'))
AND (w_id='{$webshop_info[w_id]}') LIMIT 0, 50
你必须有花括号。试试这个:
SELECT *
FROM customers
WHERE ((`firstname` LIKE '%".$search."%')
OR (`lastname` LIKE '%".$search."%')
OR (`adress` LIKE '%".$search."%')
OR (`email` LIKE '%".$search."%'))
AND (w_id='{$webshop_info[w_id]}') LIMIT 0, 50
你必须有大括号。试试这个查询('w_id'在引号之间):
尝试此查询('w_id'位于引号之间):
为什么“%”“$search.”
另外,在()中组合OR
为什么“%”“$search.”
另外,在()中组合OR
请尝试转义查询以插入$webshop\u信息括号可能有助于
WHERE(…)或(…)…)和…
确实,并且优先于OR。什么是w\u id
类型?整数还是字符串?如果直接使用$webshop\u info[w\u id]
值,会发生什么?e、 g.w_id='1'
@revo我试过了,结果是一样的。奇怪。请尝试转义查询以插入$webshop\u信息括号可能有助于WHERE(…)或(…)…)和…
,并且优先级高于OR。什么是w\u id
类型?整数还是字符串?如果直接使用$webshop\u info[w\u id]
值,会发生什么?e、 g.w_id='1'
@revo我试过了,结果是一样的。奇怪,这绝对有道理!非常感谢。这绝对有道理!非常感谢。