Pourquoi ma requête préparée n'update-t'elle rien du tout ?

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

Alorsladaccord
WRInaute impliqué
WRInaute impliqué
 
Messages: 507
Enregistré le: 30 Juil 2014

Pourquoi ma requête préparée n'update-t'elle rien du tout ?

Message le Sam Avr 08, 2017 14:38

Bonjour,

Navré de vous importuner durant votre week-end, mais je m'échine avec cette requête préparée dans laquelle je ne vois aucune erreur de syntaxe :

Code: Tout sélectionner
$req=$dbh->prepare('
UPDATE
auteur
SET
nom=:nom,
prenom=:prenom
WHERE
id=:id_auteur');
$req->execute(array(
'nom' => $nom,
'prenom'=>$prenom,
'id_auteur'=>$id_auteur  ));


Si vous avez une idée, je vous remercie par avance de bien vouloir m'en faire part...



J'essaie ça mais ça ne change rien, à vrai dire :

Code: Tout sélectionner
$sql =
"UPDATE
auteur
 SET
nom=?,
 prenom=?
   WHERE
id=?";
$stmt = $dbh->prepare($sql);

$stmt->bind_param($nom, $prenom,$id_auteur);
$stmt->execute();



Ce n'est peut-être pas une erreur de requête.

Alorsladaccord a écrit:Je n'ai jamais vu ça, quoi que j'écrive dans <?php ?>, rien en s'affiche. Et pas de message d'erreur. Alors que sur les autres pages, si j'enlève un ' ça déclenche une erreur, donc ça ne vient pas du serveur.



Alorsladaccord a écrit:Et là j'ai écrasé le fichier par un autre avec un copier coller et j'ai "enfin" un message d'erreur.

Pspad fait de drôles de choses des fois. Y'aurait-il des paramètres cachées qui définissent le bon fonctionnement d'un fichier php ?


Alorsladaccord a écrit:Et du coup, ma première requête fonctionne. Pfff....


Alorsladaccord a écrit:Et pourquoi pas la seconde ? J'ai une erreur Uncaught Error: Call to undefined method PDOStatement::bind_param() in


Alorsladaccord a écrit:Amis du monologue, bonjour.


Alorsladaccord a écrit:J'ai essayé comme ça dans le bind_param, mais ça n'est guère mieux :

$stmt->bind_param(":nom", ":prenom")



Alorsladaccord a écrit:Et maintenant, j'ai ça Uncaught Error: Cannot pass parameter 2 by reference

parce qu'à la place de bindParam, j'écrivais bind_param (on lit de ces trucs des fois sur internet...)


Alorsladaccord a écrit:Et maintenant j'ai ça :
PDOStatement::bindParam() expects at most 5 parameters, 13



Alorsladaccord a écrit:Pourquoi 5 paramètres et pas 13 ? C'est nouveau ça, on ne peut pas utiliser autant de paramètres qu'on veut avec les requêtes préparées ?




edit dd32 : fusion d'une dizaine de posts à la suite

Alorsladaccord
WRInaute impliqué
WRInaute impliqué
 
Messages: 507
Enregistré le: 30 Juil 2014

Re: Pourquoi ma requête préparée n'update-t'elle rien du tout ?

Message le Sam Avr 08, 2017 15:48

Bon ça fonctionne avec la première requête.

Mais je pige pas l'erreur avec la requête bindParam()


Merci quand même.

Anonymus
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 10
Enregistré le: 10 Juin 2015

Re: Pourquoi ma requête préparée n'update-t'elle rien du tout ?

Message le Mer Avr 12, 2017 7:50

Bonjour,

J'imagines que tu as trouvé ta réponse, néammoins 2 pistes :

1/
Afficher les erreurs sur la page :

Code: Tout sélectionner
error_reporting(E_ALL);
ini_set('display_errors',1);


2/
Afficher les erreurs spécifiques à pdo :

Code: Tout sélectionner
   print_r($dbh->errorInfo());


http://php.net/manual/fr/pdo.errorinfo.php

Voilou !

Alorsladaccord
WRInaute impliqué
WRInaute impliqué
 
Messages: 507
Enregistré le: 30 Juil 2014

Re: Pourquoi ma requête préparée n'update-t'elle rien du tout ?

Message le Mer Avr 12, 2017 15:17

Salut Anonymus,

Non, j'ai pas la réponse pour bindparam() mais en effet mon script fonctionne autrement, donc je ne me souviens même plus de la question...

Merci pour tes deux conseils. Je crois que le premier est déjà mis en oeuvre (paramètre à changer une fois en production, c'est ça ?) quant au second il faut que j'y pense. Avant c'était mysql_error() si je me souviens, mais c'est l'antiquité ça...

Encore merci pour ta réponse :-)


dd32
Modérateur
Modérateur
 
Messages: 3442
Enregistré le: 9 Sep 2005

Re: Pourquoi ma requête préparée n'update-t'elle rien du tout ?

Message le Mer Avr 12, 2017 15:48

Bonjour Alorsladaccord,

Si vous postez à la suite une dizaine de messages sans réponse, pouvez-vous "Editer" votre post initial ? (cf. bouton en haut à droite de vos posts) ? Cela permet d'éviter le flood sur le forum et l'impression de "monologue" dont vous faites mention.

Si malgré tout, les WRInautes ne répondent pas : essayez de reformuler votre besoin en éditant votre post d'origine.
Il est possible de faire remonter (up) la discussion qui n'aurait pas rencontré de réponse mais après un laps de temps "raisonnable" ou si votre besoin a évolué, par exemple : "ça fonctionne".



Bon courage pour votre développement.


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.

Lectures recommandées sur ce thème :