我知道如何使用例如WHERE字執行mysql搜索。但我的問題是我需要搜索不同的值,但這些值可能會有所不同。例如:Mysql - PHP不同值搜索
我可以搜索3個變量姓名,姓氏,年齡 但是 我在其他搜索中,我可以查找2個變量名稱,年齡。
有沒有辦法使用相同的腳本執行MYSQL搜索,無論我搜索的值的數量是多少?
Ot「強制」搜索固定數量的變量是一種更好的做法。
謝謝。
羅伯託
我知道如何使用例如WHERE字執行mysql搜索。但我的問題是我需要搜索不同的值,但這些值可能會有所不同。例如:Mysql - PHP不同值搜索
我可以搜索3個變量姓名,姓氏,年齡 但是 我在其他搜索中,我可以查找2個變量名稱,年齡。
有沒有辦法使用相同的腳本執行MYSQL搜索,無論我搜索的值的數量是多少?
Ot「強制」搜索固定數量的變量是一種更好的做法。
謝謝。
羅伯託
恕我直言,那最好是將搜索範圍限制到一個固定數量的變量。這樣,您就某個具體原因回答具體問題,而不是試圖對您的具體問題進行一般性回答。限制搜索條件使得語句更易於調試和性能基準。
希望這會有所幫助。
只需使用一個變量作爲您的搜索參數並將其插入到您的查詢中即可。只要確保在函數/方法,你把變量放到正確的格式(這將取決於你如何選擇不同的值。)
SELECT *
FROM db
$variable;
不會有WHERE
條款看出,除非它是通過你的價值觀(這意味着你可以使用這個相同的查詢來進行數據庫的一般搜索),而不用擔心有空/必填的$variable
。
你的$variable
構造時將需要在其中有WHERE
子句,然後你添加的每個值,插入它(在一個循環或許)以適當的格式。
希望這是有道理的,如果不讓我知道,我會盡力澄清。這是相同的方法,大多數人分頁時(除非他們把變量在LIMIT
而不是WHERE
)的使用
編輯:
還要確保注射前正確過濾您的變量。動態構建查詢
是的,我明白......很好的解釋。我會試試這個..謝謝。 –
簡單的例子:
$conditions = array();
if (...) {
$conditions['age'] = $age;
}
if (...) {
$conditions['name'] = $name;
}
...
if (!$conditions) {
die('No conditions supplied');
}
// if you're still using the mysql_ functions and haven't done so before:
$conditions = array_map('mysql_real_escape_string', $conditions);
foreach ($conditions as $field => &$value) {
$value = "`$field` = '$value'";
}
$query = 'SELECT ... WHERE ' . join(' AND ', $conditions);
這真的不是很難動態地湊齊要創建準確的查詢。只需要小心,不要搞亂SQL語法,或打開自己注入更多的漏洞。您可能需要查看數據庫抽象層,這幾乎可以讓您將$conditions
數組傳遞給一個函數,該函數將構建實際的查詢,或多或少以上述方式完成。
這段代碼看起來很有趣......我會試着按照你的意思去做。非常感謝你。! –
什麼意思是恕我直言。 –
在我的拙見 – geoB