mysql_error() de ne pas afficher d'erreur
Je suis en train de déboguer mon code mais mysql_error() n'est pas afficher quoi que ce soit. Je sais qu'il ya quelque chose de mal, parce que quand j'écris
or die("ERROR");
Il affiche ERREUR. Donc, le problème doit être avec cette ligne de code. Quand j'écris
or die(mysql_error());
Il s'affiche en blanc. Voici mon code pour la ligne que je pense a l'erreur:
while ($rows = mysql_fetch_array($sql6) or die(mysql_error())) {
Maintenant, voici le code complet de bloc:
$sql6 = mysql_query("SELECT * FROM replies WHERE thread_id = $thread_id");
$numRows = mysql_num_rows($sql6);
$replies = '';
if ($numRows < 1) {
$replies = "There are no replies yet, you can make the first!";
} else {
while ($rows = mysql_fetch_array($sql6) or die(mysql_error())) {
$reply_content = $rows['5'];
$reply_username = $rows['7'];
$reply_date = $rows['8'];
$reply_author_id = $rows['4'];
$sql9 = mysql_query("SELECT * FROM users WHERE id = '$reply_author_id'");
$numRows = mysql_num_rows($sql9);
if ($numRows < 1) {
while ($rows = mysql_fetch_array($sql9)) {
$reply_user_fn = $rows['first_name'];
$reply_user_ln = $rows['last_name'];
$reply_user_id = $rows['id'];
$reply_user_pp = $rows['profile_pic'];
$reply_user_lvl = $rows['user_level'];
$reply_user_threads = $rows['threads'];
$reply_user_email = $rows['email'];
$replies .= '<tr><td valign="top" style="border: 1px solid black;">';
$replies .= '<div class="reply" style="min-height: 125px;"';
$replies .= '<h2>Re: ' . $thread_title . '</h2><br />';
$replies .= '<em>by: ' . $reply_username . ' - ' . $reply_date . '</em><hr />';
$replies .= $reply_content;
$replies .= '</div></td>';
$replies .= '<td valign="top" width="200" align="center" style="border: 1px solid black;"';
$replies .= '<img src="userdata/profile_pics/' . $reply_user_pp . '" width="80" height="80"><br />';
$replies .= '<a href="profile.php?u=' .$reply_username . '" style="color: black;">'. $reply_username .'</a><br />';
$replies .= '<a href="profile.php?u=' .$reply_username . '" style="color: black;">' . $reply_user_fn.' ' .$reply_user_ln . '</a><br />';
$replies .= 'Threads: ' . $reply_user_threads . ' <br />Level: '. $reply_user_lvl .'<br />Sign up date: ' . $reply_user_email/*PUT SIGNUP DATE*/ .'';
$replies .= '<input type="button" name="addfriend" value="Add Friend">';
$replies .= '</td>';
}
}
}
}
Ce que je fais mal et pourquoi ne pas en PHP d'affichage de l'erreur mysql?
Grâce
Vous mettez
Le premier (ou devrais-je dire 2e) de modifier cette
Qui n'a rien
Eh bien, vous avez des problèmes d'ailleurs ensuite. Je vais voir si je peux pas trouver autre chose. Mais c'est l'une des questions.
or die(mysql_error())
après mysql_query
, pas myqsl_fetch_array
, et puis vous mettez à niveau à mysqli
ou PDO
.Le premier (ou devrais-je dire 2e) de modifier cette
WHERE thread_id = $thread_id"
à WHERE thread_id = '$thread_id'"
qui est le plus susceptible de la why
.Qui n'a rien
Eh bien, vous avez des problèmes d'ailleurs ensuite. Je vais voir si je peux pas trouver autre chose. Mais c'est l'une des questions.
OriginalL'auteur nitrous | 2013-12-20
Vous devez vous connecter pour publier un commentaire.
Ne pas mettre
or die()
à l'intérieur d'une condition de boucle. La condition de la boucle de devenirfalse
est ce que les signaux de la boucle à la fin, et qui sera également déclencherdie()
à chaque fois que votre boucle de la.mysql_fetch_row()
retourne false lorsqu'il n'y a plus de lignes, ce est ce qui est le déclenchement de votredie()
déclaration en dépit de l'existence d'aucune erreur.OriginalL'auteur Sammitch
Vous pouvez utiliser un
try..catch
bloc de comprendre pourquoi votre code ne fonctionne pas correctement, comme ceci:Noter que, comme vous le dites
or die
est l'obtention d'exécution, ce qui signifie qu'il y a une erreur dans votre code quelque part, et pas unmysql error
. Et, par conséquent, le code ci-dessus à capturer l'exception et de l'afficher pour vous. Aussi, il affichera tous lesmysql_error
, si elle a eu lieu, jusqu'à ce que le point de référence, de sorte que vous pouvez comparer deux chaînes de caractères.avez-vous vérifier le rapport d'erreurs php.ini. Si la fonction error_reporting est sur, puis code ci-dessus devrait fonctionner.
mysql_*
fonctions de ne pas lancer des exceptions. jamais.Je sais... Mais, dans ce cas particulier, l'utilisateur indique le
or die
est arriver exécuté, et par conséquent, il doit y avoir une erreur et pas unmysql_error()
, qui est ce qui est capturé par l'utilisateur par le présent code. Mise à jour de ma réponse pour refléter ce point de vue.Il n'y a pas d'erreur. Au moins pas dans ce bloc de code. @user3112869 mettre
or die()
dans la condition de la boucle sera toujours déclenchement de ladie()
lorsque la boucle se termine, indépendamment de si une erreur s'est produite ou non. Voir ma réponse.OriginalL'auteur Stoic
Il n'y a pas de
mysql_error()
parce quemysql_query()
est probablement correcte.Vous ne
mysql_error()
immédiatement après la requête, car il va afficher un message si la requête était mauvais, pas le code PHP qui récupère les lignes.Mais il y a une erreur...
because when I write or die("ERROR"); It displays ERROR.
Regarder le modifier, j'ai ajouté le
$conn
variable. Cela fonctionne de cette façon? php.net/manual/es/function.mysql-error.phpOriginalL'auteur Alejandro Iván
Si toujours pas d'erreur mysql, après la modification de la "ou de mourir" après "mysql_query"..ne vous obtenez $thread_id de quelque part?? comme
Aussi, si vous utilisez, de multiples connexions de base de données, à l'intérieur mysql_error('$connection_name'))
Comme:
retour de l'erreur de l'exécution de la requête à la base de données..
lors de l'utilisation de plusieurs connexion à la base de la requête devrait ressembler à:
OriginalL'auteur DecoderNT
J'ai eu le même problème de ne pas voir les messages d'erreur de mysql. Après des recherches, il est apparu que le problème n'a rien à voir avec PHP lui-même, mais avec la configuration du serveur mysql. La valeur par défaut de la variable lc_messages_dir souligné non répertoire existant. Après l'ajout d'une ligne de mysqld.cnf, puis redémarré le serveur mysql, et enfin il a travaillé. Pour moi qui suit est la bonne:
Il est décrit dans le manuel de référence de mysql: https://dev.mysql.com/doc/refman/5.7/en/error-message-language.html
OriginalL'auteur user3092162