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