Consultez la formation SEO spéciale Wordpress
par WebRankInfo / Ranking Metrics

Messages: 527

Enregistré le: 30 Juil 2014

Message le Ven Mar 10, 2017 20:17

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: Tout sélectionner
//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: Tout sélectionner
$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: Tout sélectionner
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é.
Haut
4 Réponses
Messages: 112

Enregistré le: 22 Fév 2016

Message le Ven Mar 10, 2017 21:16

tu créés cette variable $params mais tu ne t"en serts pas ensuite...
Haut
Messages: 527

Enregistré le: 30 Juil 2014

Message le Sam Mar 11, 2017 15:09

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 ?
Haut
Messages: 8559

Enregistré le: 14 Mai 2003

Message le Sam Mar 11, 2017 17:54

Il y a 2 façons de passer des paramètres, relis bien la doc:
http://php.net/manual/fr/pdostatement.execute.php
http://php.net/manual/fr/pdostatement.bindparam.php
Haut
Messages: 527

Enregistré le: 30 Juil 2014

Message le Sam Mar 11, 2017 19:06

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.
Haut

Formation recommandée sur ce thème :

Formation SEO spéciale Wordpress : apprenez à optimiser le référencement naturel d'un site fait avec Wordpress... Formation Ranking Metrics animée par un expert SEO / Wordpress.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.