我試圖使用PDO準備語句來運行查詢,該語句允許我讓用戶選擇一個字段,然後爲該字段輸入值,並將其包含在我的查詢中。PHP PDO綁定搜索框中的動態字段和值
因此,在這個基本的查詢:
$sql = "SELECT LastName, FirstName FROM administrators WHERE Status=:Status ";
$stmt->bindParam(':Status',$Status, PDO::PARAM_STR);
的偉大工程。
但是我有一個搜索表單,允許說用戶選擇下拉顯示名字,姓氏,然後在文本框中輸入搜索詞
$sql = "SELECT LastName, FirstName FROM administrators WHERE Status=:Status **AND FIELD = TERM**";
我還沒有發現任何很好的例子網上,這樣遠。任何指導表示讚賞。
我使用:
$params = array();
if (!empty($SearchField) && !empty($SearchFor))
{
$params['SearchField'] = $SearchField;
$params['SearchFor'] = $SearchFor;
}
但我得到的錯誤: 致命錯誤:未捕獲的異常 'PDOException' 有消息「SQLSTATE [42S22]:列未找到:1054未知列 'SearchField' 在「where子句」
更新的代碼:
這是我從我的形式使用的代碼:
<input id="searchtext" name="searchtext" type="text" placeholder="Search" value="<?php echo GetParam('searchtext'); ?>" />
<select name="searchby">
<option value="">Search By</option>
<option id="LastName" value="LastName" <?php if(GetParam('searchby') == 'LastName'){echo "selected='selected'";}?>>Last Name</option>
<option id="FirstName" value="FirstName" <?php if(GetParam('searchby') == 'FirstName'){echo "selected='selected'";}?>>First Name</option>
<option id="RoleName" value="RoleName" <?php if(GetParam('searchby') == 'RoleName'){echo "selected='selected'";}?>>Role Name</option>
</select>
<input type="submit" id="submit" name="command" value="search" />
,這裏是我的方法的代碼:
public function GetAllUsers($Status = 'A',$SearchField = '',$SearchFor = '')
{
$db=DB::getInstance();
$sql = "SELECT administrators.AdminId, AdminEmail, LastName, FirstName, PrimaryPhone, CellPhone, administrators.Status, LoginDateTime, RoleName FROM administrators INNER JOIN permissions on permissions.AdminId=administrators.AdminId INNER JOIN roles on roles.RoleId=permissions.RoleId INNER JOIN sessions on sessions.AdminId=administrators.AdminId WHERE Status=:Status ";
$stmt=$db->prepare($sql);
$stmt->bindParam(':Status',$Status, PDO::PARAM_STR);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_OBJ);
}
[從提供的非常相關的問題清單向你wile你正忙着寫你的問題,並仍然顯示在此頁上的右列](http://stackoverflow.com/questions/4538960/dynamic-queries-with-php-pdo) –
我早先試過這個例子,它並不完全適合我。我沒有一個特定的字段名稱具有特定的值,但一個字段可能是三個字段名稱之一,然後搜索字段,所以我需要它在$ SearchField = $ SearchFor。我沒有得到如何將這兩個綁定到SearchField =:SearchFor – Scott