我的腳本無法得到任何解決方案。我正試圖根據陣列中的內容來改變我的SQL查詢。我有一個jQuery AJAX呼叫,呼叫一個PHP腳本,根據通過AJAX呼叫傳遞的資料從資料庫中檢索資訊。
我有5個具有不同價值的復選框。在每次點擊復選框時,它都會將一個從1到5的數字存入陣列。當取消復選框時,數字會從陣列中消失。這個陣列在每次點擊復選框時都會通過AJAX呼叫。問題出在這里--陣列成功地傳遞給了PHP腳本檔案,但我需要根據陣列中的內容來改變我的SQL查詢。例如,當陣列中有('1', '5')時,我希望SQL查詢能以 "WHERE column = "1" AND column = '5'"為條件檢索資訊,但我無法在邏輯上創建它。這就是我到目前為止所做的:
$sql = "SELECT *
FROM `reviews `
WHERE `review_website_id`='" . $getQfetch['site_id'] . "' "。
if(in_array("1", $_GET['star'])) {
$sql .= " AND `review_stars` = '1'"/span>;
}
if(in_array("2", $_GET['stars']) {
$sql .= " AND `review_stars` = '2'"/span>;
}
if(in_array("3", $_GET['stars']) {
$sql .= " AND `review_stars` = '3'";
}
if(in_array("4", $_GET['stars']) {
$sql .= " AND `review_stars` = '4'";
}
if(in_array("5", $_GET['stars']) {
$sql .= " AND `review_stars` = '5'";
}
$sql .= " ORDER BY CAST(review_id AS SIGNED) DESC" ;
$_GET['starts']引數是包含1-5值的陣列。我需要SQL查詢來檢索資訊,要么陣列包含值1, 5...要么1, 2, 3, 4,但是當有多個復選框選擇時,查詢會出錯。
uj5u.com熱心網友回復:
你的查詢是這樣的:
... AND review_stars = 1 AND review_stars = = 2 AND review_stars = 3 . ..
顯然,review_stars不能同時是1 and 2。
你想要這樣:
... AND (review_stars = 1 OR review_stars = 2 OR review_stars = 3) . ..
或者,等同于:
... AND review_stars in (1, 2, 3) ...
還要注意,你的代碼很可能容易受到SQL注入攻擊。不要用字串連接法建立查詢,而應始終使用帶有預處理陳述句的系結引數。參見本頁面和本文章,以了解一些很好的例子。
本頁面。
uj5u.com熱心網友回復:
你可以嘗試將你的陣列改為逗號分隔的字串。
$values = implode(', ', $_GET['starts']);
$sql .= " AND review_stars in ($values)";
uj5u.com熱心網友回復:
你可以使用array_key_exists函式來檢查當前陣列中是否存在一個陣列鍵。(https://www.php.net/manual/en/function.array-key-exists.php)
另外,你可以使用一個開關來代替所有的if-checks(性能上更好)(https://www.php.net/manual/en/control-structures.switch.php)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/331799.html
標籤:
上一篇:什么原因。"未發現的錯誤。在null上呼叫成員函式is_empty()"
下一篇:如何組織成百上千的矢量可畫性?
