我有我的數據庫中的用戶列表,例如與名字,姓氏和公司,這些都是文本字段。現在我有一個自動填充字段,可以輸入名字,姓氏和公司名稱來查找具有類似名稱或公司名稱的用戶。我想用RedbeanPHP來完成這個任務。不幸的是,文檔沒有解釋如何在他們的「finder」函數中實現多個條件。另外,「exec」功能沒有解釋得很好,因爲我不知道如何從表單中準備值到手動語句中。Redbeanphp - 安全地查詢多個條件
這裏是我的解決方案,它進入任一名字或姓氏或公司時,發現用戶:
if (!empty($_POST['autocomplete'])) {
$userListbyFirstname = R::find('user', ' firstname LIKE ?', [ '%' . $_POST['autocomplete'] . '%' ]);
$userListbyLastname = R::find('user', ' lastname LIKE ?', [ '%' . $_POST['autocomplete'] . '%' ]);
$userListbyCompany = R::find('user', ' company LIKE ?', [ '%' . $_POST['autocomplete'] . '%' ]);
$userRbList = array_merge($userListbyFirstname, $userListbyLastname, $userListbyCompany);
$userList = array();
foreach ($userRbList as $userRb) {
$userList[] = $userRb['firstname'] . ' ' . $userRb['lastname'] . ' ' . (!empty($userRb['company']) ? $userRb['company'] : '');
}
return json_encode($userList);
}
else
{
return json_encode(array());
}
當有人進入「約翰·威廉斯」它返回一個空數組,即使有一個數據庫條目它。我會知道如何使用普通的PHP來做到這一點,但不知道如何完成,這些多個字段可以與RedBeanPHP一起搜索(=多個條件)。
我懷疑你是在估計'redbeanPHP'''''函數的作用。它接受sql字符串並將其附加到'WHERE'語句之後生成的SQL中。然後準備產生的SQL查詢字符串。所以:要匹配名字和姓氏,請使用SQL字符串:''firstname LIKE?和姓氏LIKE?''作爲SQL。如你所願,'where子句'可能很複雜。 'exec'功能類似。 –
'$ userRbList = R :: find('user','(firstname LIKE?)or(lastname LIKE?)or(company LIKE?)',['%'。$ _POST ['autocomplete']。'%' ]);'不起作用,例如預期 – hardking
好吧,謝謝你的作品!如果你想,你可以回答這個問題,我會給你一個投票,並將其標記爲最佳答案 – hardking