Problème PDO pour afficher le contenu d'une requête située dans un autre fichier

WRInaute occasionnel
Bonjour,

J'essaie de faire un truc sûrement très simple, mais pas pour tout le monde...
Well, j'ai donc deux fichiers, header.php et contenu.php
Dans le premier, j'ai une requête SQL qui va servir dans plusieurs parties du site à la fois. Et je ne veux pas la recopier partout. L'idée est donc, vous l'avez déjà compris, de se servir du principe des requêtes préparées pour utiliser cette requête partout, mais en changeant seulement la valeur du paramètre (lequel est retourné en $_POST[' ']).

J'ai donc fait ainsi :
Fichier header.php :
Code:
//on va chercher le titre du livre
$titre= "
SELECT
dico_posts.post_title AS titreModif
FROM
dico_posts
WHERE
 dico_posts.ID= ?
";

Puis, dans le fichier contenu.php, j'ai cela :
Code:
$stmt = $dbh->prepare ($titre); /* On prépare la requête */
/**$id est retournée via un formulaire*/
$params = array(':titreModif' => $id);
/** On execute la requete */
$stmt->execute();
while($titreModif= $stmt->fetch(PDO::FETCH_OBJ))
{
$titreLivre=$titreModif->titreModif;
$titreLivre=mb_strtoupper($titreLivre);
echo '
'.$titreLivre.'
';
}

Ce qui me génère une superbe erreur :
Code:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in /home/dossier/www/admin/parties/livre/contenu.php on line 14
La ligne 14 étant la ligne $stmt->execute();

Ce qui à son tour me laisse dire qu'au moins la requête est exécutée, mais le résultat est loin d'y être...
Est-ce une erreur de forme ou de fond ? Je pense que c'est la forme, parce qu'à moins de n'y avoir rien compris, on peut tout à fait déporter une requête dans un fichier séparé. Mais comme ici je mélange du pdo et des requêtes préparées, le résultat est de mauvais goût...

Merci d'avance pour vos lumières !



NB : le contenu de la variable $id est bel et bien retourné par le formulaire, j'ai testé.
 
WRInaute occasionnel
Salut Louis63, merci pour ta réponse.

Peut-être que je ne m'en sers pas, mais pourtant, je crois m'en servir.
Tu fais allusion à cette ligne :
$params = array(':titreModif' => $id);

Or dans la requête, j'ai ceci :
WHERE
dico_posts.ID= ?

Ce point d'interrogation ne signifie-t'il pas à la requête d'utiliser la valeur $id passée en paramètre de $param ?
 
WRInaute occasionnel
Ah, je dois bosser sur un autre morceau du script,là.

Je reviens sur ça dans quelques jours, j'espère que vous serez là.


NB Je n'utilise presque jamais le manuel PHP, ce sont des cas théoriques, il faut déjà avoir tout compris pour les comprendre...
Ca ne m'a jamais aidé en rien.
 
Discussions similaires
Haut