Bonjour,
PHP 7.3.10
Extension pdo sqlserveur
J'ai besoin de faire une requête préparée avec LIKE.
bindParam, bindValue, directement dans execute : j'ai essayé différentes solutions trouvées sur le net, mais aucune ne fonctionne.
[EDIT] : j'ai finalement trouvé une solution, voir en fin de ce message.
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $query = "SELECT c1, c2 FROM table WHERE c1 LIKE '%:mot%' OR c2 LIKE '%:mot%';"; $stmt = $dbh->prepare($query); $stmt->bindParam(':mot', $expression, PDO::PARAM_STR, 20); $stmt->execute();
Tried to bind parameter number 65536. SQL Server supports a maximum of 2100 parameters.
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $query = "SELECT c1, c2 FROM table WHERE c1 LIKE CONCAT('%', :mot, '%') OR c2 LIKE CONCAT('%', :mot, '%');"; $stmt = $dbh->prepare($query); $stmt->bindParam(':mot', $expression, PDO::PARAM_STR, 20); $stmt->execute();
[Microsoft][ODBC Driver 17 for SQL Server]Champ COUNT incorrect ou erreur de syntaxe
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $query = "SELECT c1, c2 FROM table WHERE c1 LIKE :mot OR c2 LIKE :mot;"; $stmt = $dbh->prepare($query); $stmt->bindParam(':mot', '%'.$expression.'%', PDO::PARAM_STR, 22); $stmt->execute();
Fatal error: Uncaught Error: Cannot pass parameter 2 by reference
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $query = "SELECT c1, c2 FROM table WHERE c1 LIKE :mot OR c2 LIKE :mot;"; $stmt = $dbh->prepare($query); $expression = '%'.$expression.'%'; $stmt->bindParam(':mot', $expression, PDO::PARAM_STR, 22); $stmt->execute();
[Microsoft][ODBC Driver 17 for SQL Server]Champ COUNT incorrect ou erreur de syntaxe
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $query = "SELECT c1, c2 FROM table WHERE c1 LIKE :mot OR c2 LIKE :mot;"; $stmt = $dbh->prepare($query); $stmt->execute(array(':mot' => '%'.$arametre[4] . '%'));
[Microsoft][ODBC Driver 17 for SQL Server]Champ COUNT incorrect ou erreur de syntaxe
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $query = "SELECT c1, c2 FROM table WHERE c1 LIKE :mot1 OR c2 LIKE :mot2;"; $stmt = $dbh->prepare($query); $stmt->bindParam(':mot1', $expression, PDO::PARAM_STR, 20); $stmt->bindParam(':mot2', $expression, PDO::PARAM_STR, 20); $stmt->execute();
Warning: Uncaught PDOException: SQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Syntaxe incorrecte vers 'OUTPUT'
Erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $query = "SELECT c1, c2 FROM table WHERE c1 LIKE :mot1 OR c2 LIKE :mot2;"; $stmt = $dbh->prepare($query); $stmt->bindValue(':mot1', '%'.$expression.'%', PDO::PARAM_STR, 20); $stmt->bindValue(':mot2', '%'.$expression.'%', PDO::PARAM_STR, 20); $stmt->execute();
Il n'y a pas d'erreur et ça fonctionne.
Avec SQLServer, il faut donc autant de binValue que de paramètre dans la requête.
Partager