Как bindValue с % в PDO?
$query = $connect->prepare("SELECT users.firstname, users.lastname, users.id
FROM users INNER JOIN users_friends ON users.id=users_friends.uID
WHERE bID=:USER AND type =:type AND accepted = '1' AND (users.firstname LIKE '%:queryString%' OR users.lastname LIKE '%:queryString%')
LIMIT 10");
$query->bindValue(":queryString", $queryString);
$query->bindValue(":type", $type);
$query->bindValue(":USER", $USER);
$query->execute();
вот что у меня есть.
Im имеет ошибку, когда я пытаюсь bindValue, а затем использовать его в подготовленном операторе (%: queryString% )
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens'
Как я могу решить это?
2 ответов
вы должны сделать
"... LIKE :query ..."
а то
$query->bindValue(":query", $queryString); //where $queryString is '%someQuery%'
public function admin_search($conn,$search_key){
$stmt = $conn->prepare("
SELECT name,criteria,description,pic from brd_det WHERE name LIKE(:n1)
UNION
SELECT name,criteria,description,pic from cus_det WHERE name LIKE (:n2)
UNION
SELECT name,criteria,description,pic from doc_det WHERE name LIKE (:n3)
UNION
SELECT name,criteria,description,pic from par_det WHERE name LIKE (:n4)
UNION
SELECT name,criteria,description,pic from pro_det WHERE name LIKE(:n5)
UNION
SELECT name,criteria,description,pic from ser_det WHERE name LIKE (:n6)
");
for ($i=1; $i < 7 ; $i++) {
$stmt->bindvalue('n'.$i,'%'.$search_key.'%');
}
//
$result=$stmt->execute();