mysql_error() not displaying an error
Solution 1
Do not put or die()
inside of a loop condition. The loop condition becoming false
is what signals the loop to end, and that will also trigger die()
every time your loop completes.
mysql_fetch_row()
returns false when there are no more rows this is what is triggering your die()
statement despite there being no error.
Solution 2
You can use a try..catch
block to understand why your code is not working correctly, like this:
try {
while ($rows = mysql_fetch_array($sql6)) {
// your code ..
}
} catch (Exception $e) {
echo $e->getMessage();
echo "---";
echo mysql_error();
}
Note that, as you say or die
is getting executed, which means that there is an error in your code somewhere, and not a mysql error
. And, therefore, the above code will capture that exception and display it for you. Also, it will display any mysql_error
, if it has occurred until that point for reference, so that you can compare the two strings.
nitrous
I love technology and am currently learning web design
Updated on December 02, 2020Comments
-
nitrous over 3 years
I am trying to debug my code but mysql_error() isn't displaying anything. I know there is something wrong, because when I write
or die("ERROR");
It displays ERROR. So the problem must be with that line of code. When I write
or die(mysql_error());
It shows up blank. Here is my code for the line that I think has the error:
while ($rows = mysql_fetch_array($sql6) or die(mysql_error())) {
Now here is the full code block:
$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>'; } } } }
What am I doing wrong and why won't PHP display the mysql error? Thanks