8768 sujets

Développement web côté serveur, CMS

bonsoir j'ai un code qui selectionne l'id d'un table et puis faits ressortir le contenu de la table de l'id sélectionné mais aprés selection j'obtient l'erreur
PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SRT_002'' at line 1 in C:\wamp\www\mfb\recherche_be2.php on line 17
voila mon code aprés selection:

<?php

$gg = $_GET['id_be'];

	$db=new PDO('mysql:host=localhost; dbname=mfb', 'root','');
	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
	if($db != false)
	{   
		
		$query = "SELECT * FROM be WHERE id_be=':id_be'";
		$query = $query.$_GET['id_be']."'";		
				

		$requete=$db->query($query);
		while ($dataF=$requete->fetch(PDO::FETCH_ASSOC))
		{
		echo "<table>
			 <tr>
				<td>Num Entr&eacute;e:</td>
				<td>".$dataF['id_be']."</td>
			 </tr>
			 <tr>
				<td>Mat&eacute;riel:</td>
				<td>".$dataF['materiel']."</td>
			 </tr>
			 <tr>
				<td>Cat&eacute;gorie:</td>
				<td>".$dataF['categorie']."</td>
			 </tr>
			 <tr>
				<td>caract&eacute;ristique:</td>
				<td>".$dataF['caracteristique']."</td>
			 </tr>
			 <tr>
				<td>March&eacute; num&eacute;ro:</td>
				<td>".$dataF['marche']."</td>
			 </tr>
			 <tr>
				<td>projet:</td>
				<td>".$dataF['projet']."</td>
			 </tr>
			 <tr>
				<td>Fournisseur:</td>
				<td>".$dataF['fournisseur']."</td>
			 </tr>
			  <tr>
				<td>Prix Unitaire:</td>
				<td>".$dataF['P_U']."</td>
			 </tr>
			  <tr>
				<td>Quantit&eacute;:</td>
				<td>".$dataF['quantite']."</td>
			 </tr>
			  <tr>
				<td>date entr&eacute:</td>
				<td>".$dataF['date']."</td>
			 </tr>
			 </table>";
		}
	}
?> 

et la ligne ou se trouve l'erreur c'est:

$requete=$db->query($query);


si quelqu'un peux m'aider à comprendre mon probléme et à améliorer mon code en cas besoin, merci!!
Bonsoir,

Essai ceci :

$query = "SELECT * FROM be WHERE id_be=:id_be";
$requete = $db->prepare($query)->execute(array(':id_be'=>$_GET['id_be']));


Ce que tu fais ne convient pas. Tu utilises :id_be, j'en déduis que tu veux préparer ta requete pour ensuite l'executer avec le paramètre :id_be.

Hors là, tu construis ta requete (dans une variable), tu ajoutes à ta requete ton id, ce qui donne SELECT * FROM be WHERE id_be=':id_be'5' (en considérant que $_GET['id_be'] soit égal à 5), puis tu lances la requete, ça ne convient pas puisque tu ne remplaces jamais :id_be, et tu ajoutes 5 suivis d'un quote simple à la fin de ta requete. Ce qui provoque une erreur de syntaxe.

tu ne dois utiliser $db->query() QUE si tu ne mets AUCUN paramètre (question de sécurité).
Modifié par kenor (03 Feb 2015 - 19:46)
merci; j'ai suivi ce que tu m'as commandée et maintenant j'ai une erreur
Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\mfb\recherche_be2.php on line 13
d'où la lgine 13

while ($dataF=$requete->fetch(PDO::FETCH_ASSOC))