我试图使用PHP来查询MYSQL以获得一些完全匹配和一些部分匹配。以下代码为我提供了所有字段的完美匹配:
$results= mysql_query ("SELECT *
FROM companyinfo
WHERE id='$Companyid'
OR companyname='$Companyname'
OR contactname='$Contactname'
OR address1='$Address1'
OR city ='$City'
OR primaryphone='$Primaryphone'
OR email='$Email'")
我希望能够对公司名称进行部分搜索。使用以下代码可以实现此目的,除非它弄乱了所有其他搜索字段。
$results= mysql_query ("SELECT *
FROM companyinfo
WHERE id='$Companyid'
OR companyname LIKE '%{$Companyname}%'
OR contactname='$Contactname'
OR address1='$Address1'
OR city ='$City'
OR primaryphone='$Primaryphone'
OR email='$Email'")
任何人都有任何提示?
答案 0 :(得分:0)
我在这里稍微阅读了你的问题,但我很确定$Companyname
是空的,留下你的查询:
SELECT *
FROM companyinfo
WHERE id='20'
OR companyname LIKE '%%'
OR ...
WHERE companyname LIKE '%%'
匹配任何非空;使所有其他OR
条件都没有实际意义。您需要设置$Companyname
为空的特殊情况,或者只是在谓词中不包含未使用的搜索条件。
当然,这就是假设OR
真的是你在这里做的意思。在我完成的大多数搜索中,假定的UX已经匹配我指定的所有条件,而不是任何。 任何唯一适用的时间是单个搜索输入,您的情况显然不是。
我还应该包括必须的“你的查询受SQL注入。停止将显然用户输入的内容放入动态查询中,并使用参数代替。”这里也有评论。
答案 1 :(得分:-2)
SELECT * FROM companyinfo
WHERE id LIKE '%$Companyid%' OR companyname LIKE '%$Companyname%' OR address1 LIKE '%$address1%' OR city LIKE '%$city%' OR primaryphone LIKE '%$primaryphone%'OR email LIKE '%$email%';