I have this code:
$rows = array();
$res = mysql_query($someQuery);
if(!mysql_errno())
while($row = mysql_fetch_assoc($res))
$rows[] = $row;
$someQuery
is an arbitrary query that I write in to a form. The mysql_errno catches the case when I write a mysql query with errors in it. But, I just discovered that when I do a "Delete from table_name" query, it of course is not an error, but at the same time the mysql_fetch_assoc fails with a "Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /blah/blah/file.php on line x".
I've tried to look for it in the manual (maybe I'm just blind...) but is there a function I can use to check if $res is a valid MySQL result resource or not?
Along with
is_resource()
you can useget_resource_type()
to check whether it is a MySQL resource.get_resource_type()
may return"mysql link"
or"mysql link persistent"
depending on your connection type.If you INSERT, UPDATE, DELETE or DROP via
mysql_query
then it will only returntrue
orfalse
(depending on success of operation).I'm not sure what you are expecting the resource to contain in this instance?
If you need the number of affected rows, you can use
mysql_affected_rows()
.mysql_query()
returnstrue
orfalse
so you can check it this way:Check http://www.lampdocs.com/blog/2010/10/how-to-check-that-a-php-variable-is-a-mysql-resource/ for the solution. Hope this helps.
if ($res)
should work fine to check if it's a resource. is_resource() will determine if its a valid resource at all.You could also check mysql_affected_rows to try to determine if it's an INSERT/UPDATE/etc
Perhaps just change the condition to:
The conditional will fail if there's no rows, and @ will suppress the warning.