PHP

Barre de recherche : "PDOStatement::execute()"

Résolu

Bonjour à tous,


J'ai créer un petit site qui me permets de surveiller se que fait mon staff. Je voulais ajouter une petite barre de recherche pour rechercher la personne qu'on voulait.

Donc j'ai suivie les 3 tuto: https://www.youtube.com/watch?v=0m5IRwp_bRk

Aucun problème sauf à la fin pour ma requète SQL.


Voici mon code:


<?php

$bdd = new PDO('mysql:host=XX;dbname=XX', 'USER', 'MDP');
	if(isset($_GET['user'])){
	
		$user = (String) trim($_GET['user']);
		
		$pdostat = $bdd->prepare('SELECT * FROM lbrpdarkrp WHERE steamid_admin LIKE ? LIMIT 10', array("$user%"));
		$executeisok - $pdostat->execute();
		$lbrpdarkrp = $pdostat->fetchall();
		
		foreach($lbrpdarkrp as $r){
		
		?>
				<div style="margin-top: 20px; border-bottom: 2px solid #ccc">
					<?= $r['steamid_admin'] . " " . $r['admin'] ?>
				</div>
		
							<?php
								}
							}
?>


Et lorsque je saisi une valeur dans ma barre de recherche j'arrive à avoir comme erreur: Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in /var/www/gouvernement-lbrp.mtxserv.com/public_html/fonctions/recherche_utilisateur.php on line 9


C'est mon execute qui ne fonctionne pas. Dans mon Select j'ai juste laissé ('SELECT * FROM lbrpdarkrp); pour tester.

Et là PAF, sa fonctionne (mais je récupère tout, donc pas top).


J'ai regardé dans plein de forum mais je ne trouve pas la solution :(


Une petite aide s'il vous plait ? Merci beaucoup par avance.


PS: j'ai essayez d'utiliser le ->query au lieu du ->prepare & ->execute mais j'ai toujours une erreurs.

1258 vues
21 avril 2020 à 15:27 (Édité)
Cette pub permet au site de vivre ...

12 commentaires

Bonjour @Clouder


Merci pour ta superbe réponse, clair & rapide. J'ai effectué le changement mais maintenant j'ai une nouvelle erreur à la ligne en dessous :/


Call to a member function fetchall() on bool in /var/www/gouvernement-lbrp.mtxserv.com/public_html/fonctions/recherche_utilisateur.php:11 Stack trace: #0 {main} thrown in /var/www/gouvernement-lbrp.mtxserv.com/public_html/fonctions/recherche_utilisateur.php on line 11


Je ne comprends pas cette erreur.

Salut @mickapette,


Il faut que tu mettes le array dans le execute.

Pour ma part j'utilise des fonctions qui me permettent de me faciliter la vie.


<?php
  $req= $bdd->prepare('SELECT * FROM lbrpdarkrp WHERE steamid_admin LIKE ? LIMIT 10');
  $pdostat= $req->execute(array($user . '%'));

  $lbrpdarkrp = $pdostat->fetchall();
Cette pub permet au site de vivre ...
1
2