2011-11-09 2 views
1

Ma fonction obtient $status (0-erreur, 1-succès), $err_id (id du message d'erreur dans db) et $field (nom du champ de saisie) variable et récupère le message d'erreur de db, avec vars donné .Problème avec la requête MYSQL

Essayé die() dans chaque étape pour détecter où erreur se produisant, également placé die($status.$err_id.$field); juste après la fonction err. Sans succès.

Débogué avec netbeans. Marquer la ligne dans laquelle le débogage s'arrête en fonction

$ msg est toujours nul. Impossible de l'extraire de DB. Il n'y a pas d'erreur dans le journal des erreurs PHP. Peut être mon code a une erreur? S'il vous plaît, jetez un oeil.

function err($status, $err_id = 0, $field = 0) 
{ 
     global $db; 
     if ($status == 0) { 
       $stmt = $db->prepare("SELECT msg FROM err_msgs WHERE field = ? AND id= ?") or die(htmlspecialchars($db->error)); 
       $stmt->bind_param("si", $field, $err_id) or die(htmlspecialchars($stmt->error)); 
       $stmt->execute() or die(htmlspecialchars($stmt->error)); 
       $stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 

       >>debug stops here>> $stmt->fetch() or die(htmlspecialchars($stmt->error)); 

       response('error', $msg); 
       $stmt->close(); 
       die(); 

     } else { 
       response('success', 'Success!'); 

     } 

} 
+0

Vérifiez le journal des erreurs apache? Peut-être que quelque chose tue le php avant qu'il n'ait l'occasion de se connecter à lui-même. –

+0

@MarcB avez-vous un IM? mon skype: tural.teyyuboglu. S'il vous plaît ajoutez-moi afin que nous puissions discuter avec vous. J'ai mal à la tête, je n'arrive pas à le faire fonctionner. J'ai essayé tous les moyens possibles, juste besoin d'une autre paire d'yeux de développement pour regarder ce code d'un autre aspect de la vue –

+0

désolé, le journal des erreurs Apache est à peu près tout ce que je pouvais penser. sans aucun type de message d'erreur, il est pratiquement impossible de diagnostiquer. –

Répondre

0

J'ai oublié de chercher après la liaison résultat

$stmt->fetch() 
0

essayez de passer ces deux lignes:

$stmt->execute() or die(htmlspecialchars($stmt->error)); 
$stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 

à

$stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 
$stmt->execute() or die(htmlspecialchars($stmt->error)); 
+1

"Notez que toutes les colonnes doivent être liées après mysqli_stmt_execute() et avant d'appeler mysqli_stmt_fetch()." Voir docs à http://www.php.net/manual/en/mysqli-stmt.bind-result.php –

+0

J'ai fait quelques tests sur le forum de mon site, fonctionne dans les deux sens, avec bind_result avant et après l'exécution. Je pourrais jurer que je me souviens d'avoir à passer d'après à avant pour le faire fonctionner ... – Frank