Aucune donnée fournie pour les paramètres dans l'instruction préparée MySQLi PHP
J'ai été en train de retravailler mon site non protégé requêtes mysql pour mysqli déclarations préparées à l'avance et tout s'est bien passé jusqu'à ce que j'ai obtenu ceci: Aucune donnée fournie pour les paramètres dans la requête préparée.
J'ai fait des recherches sans succès et je demande à l'insu de trucs de cette communauté pour m'aider.
if(empty($err)) {
$pSETQuery = NULL;
if(!empty($_POST['password'])) {
$pSETQuery .= ", password = ?";
}
if($session->isSuperuser()) {
$pSETQuery .= ", usertype = ?";
}
if(!($stmt = $database->prepare("UPDATE user SET username = ?, email = ? $pSETQuery WHERE UserId = ?"))) {
$err[] = "PREPARE FAILED.";
}
$stmt->bind_param("s", $_POST['username']);
$stmt->bind_param("s", $_POST['email']);
if(!empty($_POST['password'])) {
$stmt->bind_param("s", $_POST['password']);
}
if($session->isSuperuser()) {
$stmt->bind_param("s", $_POST['usertype']);
}
$stmt->bind_param("i", $_POST['userid']);
if(!$stmt->execute()){
$err[] = "Execute failed. ERROR: " . $stmt->error;
}
}
Ce qui concerne,
Harry
Toute aide serait appréciée, dans le besoin d'une réponse rapide, les acceptons, si elle en vaut la peine.
OriginalL'auteur PwnageAtPwn | 2012-09-28
Vous devez vous connecter pour publier un commentaire.
Semble que vous voulez probablement pour valider tous les champs avant d'aller de l'avant et de mettre à jour leur profil.
OriginalL'auteur Nerdwood
Utilisez-vous le Zend Framework ?
Il pourrait être un problème de version entre Php et Zend.
J'ai eu le problème avec PHP 5.3 +, qui a obtenu le même message d'erreur lors de l'insertion ou de mise à jour avec le Zend framework 1.8.3.
Si vous êtes dans ce cas, une des solutions est de changer le connecteur à la base de données. Essayez, ça marche pour moi :
OriginalL'auteur Zard
"Pas de données fournies pour les paramètres dans l'instruction préparée" signifie déclaration est ok, mais au moins l'un des vars vous êtes offrant à bind_param n'est-il pas comme prévu! je voudrais imprimer $_POST et voir ce qui se passe et éventuellement défini $pSETQuery = "; et de ne pas nul!
acclamations
OriginalL'auteur Ivo
J'ai juste trouvé le moyen de résoudre le même problème.
C'était une valeur de passé pour MySQL, qui a été
NULL
. Alors que cette colonne ne peut pas êtreNULL
dans la définition de la table...OriginalL'auteur JoDev