[英]PHP: How to pass multiple values to SELECT query
我是PHP新手,希望有人可以幫助我。
我目前使用以下幾行從數據庫中檢索一個值,並將其輸出為具有項目ID和值的數組,該ID和值可按預期工作。
現在,我需要對多個項目執行相同的操作,因此我的輸入( $tID
)將是一個包含多個ID的數組,而不僅僅是一個ID,並且我需要查詢才能對這些ID中的每一個進行OR搜索 。
我當時正在考慮為此使用一個foreach循環在每個ID后面加上" OR "
,但不確定這是否是正確的方法-我知道以下內容不起作用,只是想在這里展示我的想法。
有人可以幫我這個忙,並告訴我如何最好地解決這個問題嗎?
我目前的PHP:
$content = "";
$languageFrm = $_POST["languageFrm"];
$tID = $_POST["tID"];
$stmt = $conn->prepare("SELECT tID, " . $languageFrm . " FROM TranslationsMain WHERE tID = ? ORDER BY sortOrder, " . $languageFrm);
$stmt->bind_param("s", $tID);
$stmt->execute();
$result = $stmt->get_result();
while($arr = $result->fetch_assoc()){
$content[] = array("ID" => $arr["tID"], "translation" => $arr[$languageFrm]);
}
我的想法:
foreach($tID as $ID){
$ID . " OR ";
}
非常感謝您的幫助,邁克
假設$ tID是ID數組,有兩種方法
使用MySQL IN()子句
當$ tID不是數組而是單個標量值時,這也將起作用。
$tID = array_map('intval', (array)$tID); // prevent SQLInjection
if(!empty($tID)) {
$query .= ' WHERE tID IN(' . implode(',', $tId) . ')';
} else {
$query .= ' WHERE 0 = 1';
}
按照您的建議使用OR子句
更復雜的情況。
$conds = array();
foreach($tID as $ID) {
$conds[] = 'tID = ' . intval($ID);
}
if(!empty($conds)) {
$query .= ' WHERE (' . implode(' OR ', $conds) . ')';
} else {
$query .= ' WHERE 0 = 1';
}
根據上述條件,您可以嘗試implode();
implode($tID,' OR ');
您也可以使用IN條件而不是像這樣的OR。
implode($tID,' , ')
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.