[RESOLU] Problème requête préparée pour recherche

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème requête préparée pour recherche

Re: Problème requête préparée pour recherche

par two3d » 26 nov. 2018, 12:01

si elle affiche rien c'est qu'il y a sans doute pas de résultat ou qu'il y a une erreur, il vous faut faire un debug, ligne par ligne et voir qu'est ce que dit votre requête
Je commencerais par afficher le nombre de ligne retournée par la requête en question, puis voir aussi si le mysql error retourne pas d'erreur

Re: Problème requête préparée pour recherche

par BerengerLeroi » 26 nov. 2018, 11:44

Bonjour,
Il y a quel problème avec cette requête car elle n'affiche rien.
$stmt=$_GET['q'];
$stmt = $bdh->prepare("SELECT titre FROM articles WHERE titre LIKE '%?%'");
			if ($stmt->execute(array($_GET['q']))) {
			  while ($row = $stmt->fetch()) {
				print_r($row);
				}
			}

Re: Problème requête préparée pour recherche

par two3d » 20 nov. 2018, 19:03

en effet, j'avais pas vue ^^ nommez la $pdo! lol ce sera moins trompeur, ou même faire une fonction, du genre:
function requete($sql){
   global $pdo;
   return $pdo->prepare($sql);
}
//utilisation simple et plus rapide que de tout taper à chaque fois:
$stmt=requete("SELECT titre FROM articles WHERE titre LIKE '?'");

Re: Problème requête préparée pour recherche

par BerengerLeroi » 20 nov. 2018, 19:00

Merci Saian pour la réponse. J'ai arrangé donc plus d'erreur mais la requête n'affiche rien en retour "la table n'est pas vide"

Re: Problème requête préparée pour recherche

par Saian » 20 nov. 2018, 18:50

Je suis pas allé jusqu'à regarder la requête two3d car il y a déjà un problème avec le nom de la variable, d'où les 2 messages d'erreur. ;)

$dbh est undefined vu qu'elle a été déclarée en $bdh (undefined variable dbh) et du coup forcément $dbh est null et n'a donc pas de méthode prepare (Call to a member function prepare() on null).

Mais ta remarque sur le % peut être pertinente pour la suite. :)

Re: Problème requête préparée pour recherche

par two3d » 20 nov. 2018, 18:42

Salut, faut apprendre à se relire.
Tu déclares $bdh et ensuite tu essaies d'utiliser $dbh... :mrgreen:
Je connais pas bien les requêtes préparée mais il me semble (comme avec mysqli_*) qu'on utilise la variable de connexion pour faire des requêtes, non ?

Je penche plutôt que ton LIKE est mal utilisé, quand on fait une recherche avec LIKE, on entoure ce qu'on veu rechercher avec des guillemet simples:
("SELECT * FROM table WHERE champ LIKE 'ce que je recherche'");//recherche le terme exact
("SELECT * FROM table WHERE champ LIKE '%ce que je recherche'");//recherche tous les champs qui finissent par le terme
("SELECT * FROM table WHERE champ LIKE '%ce que je recherche%'");//recherche le terme n'importe où dans le champ

Re: Problème requête préparée pour recherche

par Saian » 20 nov. 2018, 18:27

Salut, faut apprendre à se relire.
Tu déclares $bdh et ensuite tu essaies d'utiliser $dbh... :mrgreen:

Problème requête préparée pour recherche

par BerengerLeroi » 20 nov. 2018, 18:21

Salut,
j'ai crée sur mon site web une page de recherche interne. J'ai utilisé une requête préparée mais ça ne donne pas.
Voici mon code:
<?php
		if(!empty($_GET['q']))
		{
			$stmt=$_GET['q'];
			try
			{
				$bdh = new PDO('mysql:host=localhost;dbname=monsite;charset=utf8', 'root', '');
			}
			catch(Exception $e)
			{
				die('Erreur : '.$e->getMessage());
			}
			
	52		$stmt = $dbh->prepare("SELECT titre FROM articles WHERE titre LIKE ?");
			if ($stmt->execute(array($_GET['q']))) {
			  while ($row = $stmt->fetch()) {
				print_r($row);
				}
			}
			
		}
		?>
J'ai deux messages d'erreur:
1- Notice: Undefined variable: dbh in C:\wamp\www\monsite.cg\recherches.php on line 52
2- Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp\www\monsite.cg\recherches.php on line 52

J'ai besoin de l'aide de vous tous. J'attends vos réponses.