簡體   English   中英

PHP:如何將多個值傳遞給SELECT查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM