我希望這個題目很好地代表了這個問題。我試圖建立一個基於多個$ vars現有的動態查詢。我正在嘗試使用簡單的if/ifelse/else塊來完成這項工作,但似乎無法使其正常工作。第一條if語句相應執行,但第三條語句失敗。我是PHP的新手,所以我認爲這是一個初學者的錯誤。我也相信最有可能以更有說服力的方式達到預期的結果。基於多個變量和條件構建動態MySQL查詢
基本上,用戶在多個文本字段中輸入一些輸入。 3個需求中只有一個需要包含一個值,但2個或全部3個需要。如果該值不存在於字段中,則應根據提供的值生成一個Query。我正在驗證併爲每個輸入創建一個變量,而不是檢查這些變量是否包含值或存在。
//////////////////////////////////////////////////////
if(isset($_POST['inputName']) && $_POST['inputName'] != ""){
$inputName = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['inputName']);
}
if(isset($_POST['inputState']) && $_POST['inputState'] != ""){
$inputState = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['inputState']);
}
if(isset($_POST['inputCost']) && $_POST['inputCost'] != ""){
$inputCost = preg_replace('#[0-9]#i', '', $_POST['inputCost']);
}
///////////////////////////////////////////////////////
if (!empty($inputName) AND !empty($inputState) AND !empty($inputCost)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_name LIKE '%$inputName%' AND school_state LIKE '%$inputState%' AND school_cost < '$inputCost'";
}
elseif (!empty($inputName) AND !empty($inputState)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_name LIKE '%$inputName%' AND school_state LIKE '%$inputState%'";
}
elseif (!empty($inputName) AND !empty($inputCost)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_name LIKE '%$inputName%' AND school_cost < '$inputCost'";
}
elseif (!empty($inputState) AND !empty($inputCost)){
$sqlCommand = "SELECT * FROM hciproject WHERE school_state LIKE '%$inputState%' AND school_cost < '$inputCost'";
}
else{
$searchOut .= "0 Results Found";
}
// Connect to DB
include_once("database_connection.php");
$query = mysql_query($sqlCommand) or die(mysql_error());
$count = mysql_num_rows($query);
///////////////////////////////////////////////////////
此外,我打算創建只包含一個變量的elseif語句。
任何幫助,這將不勝感激。
你得到什麼錯誤到底是什麼? –
@EmrysMyrooin當我將值輸入到字段並測試每個if/elseif語句時,只有前兩個正確執行並構建適當的查詢。基本上只有'if'和第一個'elseif'語句正在執行,但不是下一個。謝謝 – davecalvin