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.

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

12 commentaires

@mickapette,


Impeccable alors, tu peux mettre en résolu si c'est le cas 😁

AAAAhh c'est bon.


@Nico19 On m'a appris comme sa et je n'ai jamais eu problème par rapport au PDO mais merci quand même ^^


@Clouder J'ai essayer mais sa ne change rien.



Enfaite l'erreur est extrèmement bête mais "invicible"..... J'ai mis des espaces devant les variables... MY BAD


Merci beaucoup pour vos réponses et votre rapidité ^^

@mickapette

Tu peux essayer dans le fetchAll() ?

Bonjour @mickapette,


Peut-être que ton problème viens de la connexion à ta base de donnée

Comme l'a dit @Clouder, l'erreur vient peut-être d'un oubli de ';'


En haut de ta pages, tu as la connexion à ta base de donnée, tu as oublié de les mettres :


$bdd = new PDO('mysql:host=XX;dbname=XX', 'USER', 'MDP');


Essayes :


$bdd = new PDO('mysql:host='XX';dbname='XX','USER','MDP');


Comme tu peux le voir j'ai mis des ';'


😀

Tu peux me faire une capture d'écran de ton code et me mettre le lien de goopic ?


Généralement cette erreur indique que tu as oublié un ';' ou une parenthèse

Même erreur avec marquer dedans $req


Parse error: syntax error, unexpected '$req' (T_VARIABLE) in /var/www/gouvernement-lbrp.mtxserv.com/public_html/fonctions/recherche_utilisateur.php on line 8

@mickapette,


Tu peux mettre $req à la place juste pour tester ?

Nouvelle erreur: Parse error: syntax error, unexpected '$pdostat' (T_VARIABLE) in /var/www/gouvernement-lbrp.mtxserv.com/public_html/fonctions/recherche_utilisateur.php on line 8


Il n'a pas l'air d'aimer ma variable $pdostat


<?php

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


@mickapette,


J'ai fait une petite erreur, peux-tu tester avec ceci :


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


De plus quand tu utilises l'instruction foreach tu n'es pas obligé de mettre le fetchAll() car le foreach le gère de lui même ! 😁

Cette pub permet au site de vivre ...
1
2