我需要設置一個SQL查詢,其中包含從URL中提取的多個參數。到目前爲止,我只能讓它與URL中只有一個項目一起工作。設置具有多個參數的SQL查詢
我的默認查詢到的所有內容
$sql = "SELECT ";
$sql .= "* ";
$sql .= "FROM ";
$sql .= "cms_site_content ";
$sql .= "WHERE ";
$sql .= "1";
拉然後我檢查什麼是通過URL傳遞和檢索。
if (isset($_GET["d"])) {
$d=$_GET["d"];
裏面的if語句,我發現如「d」傳遞的價值觀爲單獨項目
$newD = explode(',',$d);
$countD = count($newD);
foreach($newD as $discipline) {
if ($countD == 1) {
$sql .= " AND";
$sql .= " discipline='".$discipline."'";
}
我的問題是獲得SQL工作,如果有一個以上的學科價值。它應是這樣的:
SELECT * FROM cms_site_content WHERE 1 AND discipline="value"
但是如果有一個以上的學科價值,應改爲:
SELECT * FROM cms_site_content WHERE 1 AND discipline="value OR discipline="value2" OR discipline="value3"
有沒有寫這個更有效的方式?我無法弄清楚如何將OR插入到foreach語句中。
有很大的庫和框架在那裏,做這一切都爲您包括安全,爲什麼另起爐竈? – jtheman
你應該閱讀如何使用帶有MySQL的PDO:http://www.php.n et/manual/en/pdo.prepare.php – sdespont
你可以使用圓括號來做'塊'檢查('SELECT * FROM cms_site_content WHERE 1 AND(discipline =「value」OR discipline =「value2」)')。我建議刪除'1 AND'塊以使其更容易,甚至可以使用爲您完成工作的框架/庫。 – Diamondo25