Aside from writing the wrong query and not having permissions to access a table, when mysql_query
returns false? Are there any other cases?
According to the MySQL reference documentation for mysql_query this should return zero on success and non-zero on failure.
This extension was deprecated in PHP 5.5. 0, and it was removed in PHP 7.0.
mysql_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If link_identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if mysql_connect() was called with no arguments, and use it.
See the reference guide:
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.
The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.
Use mysql_num_rows() to find out how many rows were returned for a SELECT statement or mysql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.
mysql_query() will also fail and return FALSE if the user does not have permission to access the table(s) referenced by the query.
http://php.net/manual/en/function.mysql-query.php
Edit: Clarification of what those errors actually are.
So we have list of things that can return false:
In my opinion the first 2 are the ones that are a bit diffuse. What are the possible errors? There are 59 different client errors you can get from MySQL. These are more system related errors which we can presume that php will handle and probably wrap into a smaller amount of abstract errors.
Except for those client errors you have a set of more abstract errors which you can encounter during usage which is more related to using the actual API inside the application rather than the raw access to the MySQL server. Those are:
Here are the references of what I just said:
Thank you for your comment.
I am sure there is absolutely no need to dig into such details.
A thing you really need is error message which you can read and thus get informed of the particular problem.
So, it seems that mysql_error()
function is really what you're looking for.
$res = mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);
looks sufficient enough.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With