RE: [PHP] Simple Problem
| From: | Pablo Gosse | Date: | Tue, 12 Apr 2005 15:34:12 +0000 |
| Subject: | RE: [PHP] Simple Problem | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-212928@lists.php.net to get a copy of this message | ||
<snip>
I can't figure out what I am doing wrong,
this sql string seems to filter out the information I want but it
duplicates the all info, as 'num_rows' is total of rows in the table and
not the correct value of the filtered information?
$sql="SELECT products.productID, products.title,
products.number_per_box, products.stock_level, products.image,
users.username, users.email, users.userID FROM users, products WHERE
products.userID = $userID"; $mysql_result=mysql_query($sql,$connection);
$num_rows=mysql_num_rows($mysql_result);
this is the old sql statement which works fine -
$sql="SELECT productID, title, number_per_box, stock_level, image,
userID FROM products WHERE userID = '$userID'";
$mysql_result=mysql_query($sql,$connection);
$num_rows=mysql_num_rows($mysql_result);
what I am I doing wrong.
</snip>
In the old query you're jut pulling records from one table. In the
second, you're joining two tables, but you're still using the same WHERE
clause, products.userID = $userID.
This is causing multiple records to be returned, since there is nothing
specifying how you are joining the users and products table so it
correctly returns a match for every row in the user table.
Change the where clause to:
WHERE products.userID = $userID
AND users.userID = $userID
and this will force the query to limit results to those records in
products that have a matching record in the users table.
HTH.
Pablo