我將一些值傳遞給一個函數,然後想要創建一個SQL查詢以在數據庫中搜索這些值。從PHP中傳遞的值動態創建一個SQL語句
這個輸入是下拉框,這意味着輸入可以是ALL或*我想創建的通配符。
的問題是,你不能做:
$result = mysql_query("SELECT * FROM table WHERE something1='$something1' AND something2='*'") or die(mysql_error());
我已經做了開始,但無法找出邏輯循環,使其工作。這是我到目前爲止:
public function search($something1, $something2, $something3, $something4, $something5) {
//create query
$query = "SELECT * FROM users";
if ($something1== null and $something2== null and $something3== null and $something4== null and $something5== null) {
//search all users
break
} else {
//append where
$query = $query . " WHERE ";
if ($something1!= null) {
$query = $query . "something1='$something1'"
}
if ($something2!= null) {
$query = $query . "something2='$something2'"
}
if ($something3!= null) {
$query = $query . "something3='$something3'"
}
if ($something4!= null) {
$query = $query . "something4='$something4'"
}
if ($something5!= null) {
$query = $query . "something5='$something5'"
}
$uuid = uniqid('', true);
$result = mysql_query($query) or die(mysql_error());
}
這個問題是,它只能按順序工作。如果有人先輸入例如something3,那麼它不會在正確的位置添加AND。
任何幫助非常感謝。
關於sugguestion是將你的'somethings'作爲數組field =>值,然後遍歷它們。如果您未來需要添加更多「東西」,它會使事情變得更容易。 – primo
使用數組輸入您的'Somethings',然後獲取非空值的數量,將其存儲在變量中,只對非空值進行迭代。在這個循環中,最後一項不會有任何'AND'字符串附加到它 – Newben