簡體   English   中英

如何限制MySQL查詢拒絕的結果?

[英]How to limit results retrurned by MySQL query?

我有這段代碼,效果很好。 唯一的問題是,我將一次獲得多個結果,而我只需要一個。 假設我正在尋找帳戶2,如果在輸入框name =“ id”中輸入2,我將得到所有具有數字2的結果。如果我要查找特定人員的姓名,然后鍵入名,然后輸入另一個姓氏。.它將帶出我想要的名字,但帶其他結果時,帶上我輸入的姓氏。 我該如何為尋找的結果設置一個限制,以便找到匹配結果? 我仍在學習。 謝謝

PS。 可以說有效,沒有可以在其中指定LIMIT 1.的地方。

$searchFields = []; 

foreach (['id', 'firstname', 'lastname', 'email'] as $searchField) {
    if (!empty($_POST[$searchField])) {

        $searchFields[$searchField] = $_POST[$searchField];
    }
}


if (count($searchFields) > 0) {
    $queryStr = "SELECT * FROM `Demo_Guests` WHERE 0";
    foreach (array_keys($searchFields) as $fieldName) {
        $queryStr .= " OR " . $fieldName . " LIKE :" . $fieldName ;
    }
    //var_dump($queryStr);
    $stmt = $conn->prepare($queryStr);
    foreach($searchFields as $fieldName => $fieldValue) {
        $stmt->bindValue(':'. $fieldName, "%$fieldValue%", PDO::PARAM_STR);
    }
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_OBJ);
    //var_dump($result);
} else {
    echo  "";
}

}
catch(PDOException $e){
    echo $e->getMessage();
}
}

您可以在$queryStr的末尾添加LIMIT 1

$queryStr = "SELECT * FROM `Demo_Guests` WHERE 0";
foreach (array_keys($searchFields) as $fieldName) {
    $queryStr .= " OR " . $fieldName . " LIKE :" . $fieldName ;
}
$queryStr .= " LIMIT 1";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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