[RESOLVED] Supplied Argument not Valid Mysql Resource
Hey, guys!
I'm working on a script to grab data from a row in a database based on the id of the row (which automatically increments).
The script will grab a number from the URL (7 in www.site.com/page.php?id=7), and then find the row in a table with an id that matches that number. It will assign variables to data from that row, so the information can be placed in various places in the dynamic page.
However, something does not appear to be working: This script is on page.php. So when I type in the URL: www.site.com/page.php?id=7 , I receive the error output: "Save me!" and the text "Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/dot/public_html/the_editor/page.php on line 19."
Following is the script:
PHP Code:
$id = $_GET['id'];
include("dbconnect.php");
mysql_connect(localhost,$username,$password) or die("Could not connect to MYSQL");
@mysql_select_db($database) or die(mysql_error());
$query="SELECT * FROM [table_name] WHERE id='$id'" or die(mysql_error());
$result=mysql_query($query);
mysql_close();
I don't know half of you half as well as I should like; and I like less than half of you half as well as you deserve.
- Bilbo Baggins in The Fellowship of the Ring
That message normally indicates that your query could not be processed by MySQL, and therefore $result is FALSE instead of a query result resource ID. You can check after doing the mysql_query() to see if $result is false, and if so use mysql_error() to get some info (e.g. via error_log() or user_error()). If the code is exactly as posted here, then I suspect the immediate problem is "[table_name]" needing to be replaced with a valid table name (and not in brackets).
"Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
~ Terry Pratchett in Nation
$result was false and problem was rooted in wrong tablename
NogDog,
You were right on - twice! After implementing the error checks that you reccommended, I discovered that $result was indeed false. The error message, however, led me to the solution - I had the wrong table name - that you suspected. I had inadvertently put the database name for the table name.
Below is the resolved code. I would note, however, that being new to PHP, I did not know how to implement error checks, and so tried to search the web for a how-to on that. I ended up using NogDog's error code that he supplied someone else on this site!
PHP Code:
<?php
$id = $_GET['id'];
include("dbconnect.php");
mysql_connect(localhost,$username,$password) or die("Could not connect to MYSQL");
@mysql_select_db($database) or die(mysql_error());
$query="SELECT * FROM articles WHERE id='$id'" or die(mysql_error());
$result=mysql_query($query);
/*Checking to see if $result is false*/
if($result == false) {
user_error(mysql_error() . "\n$query"); // or use error_log()
die("Fatal database error"); // or whatever you want to tell user
}
mysql_close();
I don't know half of you half as well as I should like; and I like less than half of you half as well as you deserve.
- Bilbo Baggins in The Fellowship of the Ring
Bookmarks