我通過PHP中的PDO連接到SQL Server數據庫。我的問題是爲什麼每次while循環運行時都不能將參數綁定到指定的位置標記?以下是代碼:PDO BindParam不會在while循環中綁定每次
public function search($search, $field)
{
$c = new PDO("sqlsrv:Server=localhost;Database=$this->_db", $this->_user, $this->_pass);
$sql = "
SELECT Title
FROM Table WHERE 1=1";
//form array of search terms stored in serachArray variable
$searchArray = explode(' ', $search);
//count objects in array
$num_search_terms = count($searchArray);
$i = 0;//for search term array (starts at 0)
$x = 1;//for parameter incrementin (starts at 1)
while($i <= ($num_search_terms -1))
{
$sql .= "
AND $field LIKE :s".$x;
$stmt = $c->prepare($sql);
$currTerm = "%" . $searchArray[ $i ] . "%";
$stmt->bindParam(':s'.$x, $currTerm);
$i++;
$x++;
}
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_OBJ))
{
print $row->Title;
}
}
結果集返回時爲空而沒有錯誤。肯定應該有這個搜索返回的數據。當我只輸入一個搜索詞時,它工作正常。但是,當我輸入一個以上時,我總是得不到結果。
你錯了。你應該建立完整的查詢字符串,然後綁定參數。 –