Bonjour,
je viens de démarrer en PHP/MySQL.

J'ai donc tenté de faire une requête préparée, en imitant celle trouvée dans le tuto que je suis , et j'obtient l'erreur
Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\malap\corps_description_materiel.php on line 22
sans parvenir à obtenir le détail (alors que jusqu'à là, quand j'avais des bug sur les requêtes, j'arrivais à obtenir plus de détails).

Voici le bout de code posant problème (c'est le début d'un fichier, inclus dans un fichier ne contenant pour l'instant que les entêtes et compagnie):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php //commun à la version normale et admin 
	if (!isset($_GET['id_mat']) ) // l'url ne comprend pas le champ id_mat
	{
		?>
			<p>Erreur : l'URL est invalide, il manque l'identifiant du matériel pour lequel il faut afficher le détail. <br/> <a href='liste.php'>Retourner à la liste du matériel</a> </p>
		<?php
	}
	else // tout vas bien
	{
		$ID_mat=(int) $_GET['id_mat']; //on force id_mat à être (ou devenir) un int
		try //on se connecte à la base de données : à modifier au moment de mettre sur le serveur
		{
			$bdd = new PDO('mysql:host=localhost;dbname=malap', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
		}
		catch (Exception $e)
		{
			('Erreur : ' . $e->getMessage());
		}
		$req = $bdd->prepare('SELECT * FROM mat WHERE id_mat=?')or die(print_r($bdd->errorInfo()));
		$reponseSQL_detail_mat = $req->execute(array($ID_mat)) or die(print_r($req->errorInfo()));
		//$reponseSQL_detail_mat = $bdd->query('SELECT * FROM mat WHERE id_mat=1') or die(print_r($bdd->errorInfo()));
		if ($infos=$reponseSQL_detail_mat->fetch())
		{
			$reponseSQL_detail_mat->closeCursor();
 
			?>
				<p> tout est en ordre </p>
			<?php
A savoir que je veille à bien mettre le paramètre un id_mat valide. Si je remplace les lignes 19 et 20 par la ligne 21 (mise en commentaire), alors je n'ai pas de problèmes (j'obtiens le message "tout est en ordre").

Si quelqu'un pourrait m'indiquer où se trouve l'erreur (ou comment afficher le détail de l'erreur), je lui en serait très reconnaissant.

En vous remerciant par avance
Sandro

PS : j'espère avoir fait le bon choix en plaçant le sujet ici plutôt que de le mettre dans PDO et d'indiquer MySQL en tag