gpt4 book ai didi

php - Mysql哪里喜欢还是喜欢

转载 作者:行者123 更新时间:2023-11-29 01:29:28 25 4
gpt4 key购买 nike

MySql 查询有问题。我正在寻找三个字段中的模式匹配,我尝试使用方括号来分隔每个相似的模式。它没有返回正确的行数,而是返回所有行作为结果。

这里是查询

mysql_query("select * from contacts where contact_name like '%$contact_name%' or bus_name like '%$busname%' or contact_email like '%$contact_email%'"); 

如果我搜索 contact_name(如 Kim)或 busname(如 someword)和 contact_email(如 anyword),它应该只返回 1 个结果。

我认为问题是当用户将搜索字段留空时 MySql 不喜欢在 like 语句中搜索任何内容。我会更好地在搜索之前捕获该字段并将其替换为模糊字符以使其不为空,或者语句中是否有一种方法可以处理空白搜索字符串

感谢您的帮助

最佳答案

您的直觉是正确的,空白会导致您的语句返回所有行。

如果此人提交空白表单,则运行的 SQL 实际上是:

select * from contacts where contact_name like '%%' or bus_name like '%%' or contact_email like '%%'"

很明显,这将返回所有行。

解决方案:您需要首先检查您的任何一个变量是否具有值,如果您没有至少一个具有非空/有效值的变量,您应该返回一个错误。

我强烈赞同发帖者所说的在不清理代码的情况下存在严重的 SQL 注入(inject)风险!!!

关于php - Mysql哪里喜欢还是喜欢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21289057/

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