2009-12-07 7 views
0

Mon problème est le suivantpdo Numéro de paramètre non valide

Y ont deux fonctions qui sont appelées à l'intérieur d'une fonction (méthode)

Si le résultat de la première fonction est TRUE, la deuxième fonction exécute une sélection et une requête de mise à jour.

La deuxième fonction exécute une sélection avec la requête ($ sql) commande La requête de mise à jour utilise:

$stmt = $db->prepare($sql); 
$stmt->execute(arraywithvalues); 

séparemment, les deux fonctions fonctionnent parfaitement, mais pas quand ils sont appelés à la fois en d'autres termes, au moment où la deuxième fonction doit être exécutée, elle échouera. Si je commente la première fonction, elle s'exécutera correctement?

EDIT

La mise à jour requête

$tt = time() - 3600; 
$w =array(NULL, NULL, $passw_new, $passw_key_new, $user_id); 
$sql ="UPDATE table SET new_passw_requested =?"; 
$sql .=" WHERE passw_key_new='b02cdf33e46923de5a097c594e846764'"; 
$sql .=" AND UNIX_TIMESTAMP(new_passw_requested) >= $tt"; 
$sql .= " AND id=?"; 

Les fonctions réelles sont. 1) can_reset_passw() qui exécute une requête select, 2) reset_passw() qui effectue une sélection puis une mise à jour. Les deux fonctions fonctionnent bien indépendamment comme je l'ai dit ci-dessus.

erreur: Trouvé un

SELECT * FROM table WHERE id = :id AND actief = :actief 
Array ([0] => SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens) 

donc quelque chose de jouer avec ce

I try'd réglage $ stmt = NULL pour effacer les ressources, mais que le travail de diddn't. D'une certaine façon les jetons du premier select sont encore en mémoire, je pense

Que pourrais-je faire pour résoudre ce problème?

résolu

La dernière erreur m'a mis sur le droit chemin. La classe dbabstraction tenait de conditions dans la mémoire

grâce, Richard

+0

Quoi de neuf le problème que vous voyez? Quel genre de requêtes sont exécutées par oyu? Etc. S'il vous plaît partager quelques plus de détails. – johannes

+0

Pourriez-vous s'il vous plaît fournir un peu plus de code? En particulier la partie entre 'if ($ rows)' et la seconde '$ stmt = $ db-> prepare (...' semble être importante :-) –

+0

Es-tu en train de calculer l'horodatage deux fois? (Avant chaque déclaration?) Peut-être que le temps passe, l'horodatage change? –

Répondre

0

(Cela a été résolu il y a quelque temps par l'OP et la solution éditée dans la question de sorte qu'il est resté dans la file d'attente sans réponse. Copié ici comme réponse wiki communautaire pour tenir compte de la situation, bien que la réponse était très court Si quelqu'un peut faire la réponse plus cohérente, ils peuvent modifier ici Voir Question with no answers, but issue solved in the comments (or extended in chat))

l'OP a écrit:..

The last error set me on the right path. The dbabstraction class was holding de conditions in memory