我的代碼包含PHP的MySQL搜索
SELECT * FROM newchap WHERE company LIKE '%$company%' OR Category LIKE '%$cat%'
它完美然而,當現場$公司包含空的,它在MYSQL返回所有結果。
如何預防?
我的代碼包含PHP的MySQL搜索
SELECT * FROM newchap WHERE company LIKE '%$company%' OR Category LIKE '%$cat%'
它完美然而,當現場$公司包含空的,它在MYSQL返回所有結果。
如何預防?
SELECT *
FROM newchap
WHERE (company LIKE '%$company%' AND company != '') OR Category LIKE '%$cat%'
由於%通配符可以是字符的任意組合,如果它是空的,您將選擇任何公司;你在這種情況下,查詢是
SELECT * FROM newchap WHERE company LIKE '%%' OR Category LIKE '%$cat%'
您可以添加AND條件到SQL過濾掉的情況下,公司爲空,或者你可以只檢查在PHP。如果這是一個應該更快的常見情況,因爲它可以節省您運行查詢的時間。
另外 - 和這是非常重要的 - 如果有可能$公司或$貓可能包含用戶輸入,你應該使用parameterized SQL query。否則你正在爲SQL injection創建一個漏洞。