Ed Charkow
Ed Charkow

Reputation: 61

While returning no results

I've got the following query in an existing script - but it's not always returning a value even though it should based off what's in the database. There are plenty of things in the database it SHOULD be grabbing - they are there.

Don't see anything wrong with it - but I barely do this anymore :) See anything?

$query = "SELECT id FROM xtags WHERE tag_id = '$tagid' ORDER BY RAND() Limit 2";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){

            $query = "SELECT * FROM xtable WHERE id = '$row[id]'";
            $result = mysql_query($query) or die(mysql_error());
            $row2 = mysql_fetch_assoc($result);
            echo $row2[title];

}

Upvotes: 1

Views: 74

Answers (5)

Ed Charkow
Ed Charkow

Reputation: 61

Problem solved - did a join statement.

Upvotes: 0

robx
robx

Reputation: 3123

I don't understand what you are trying to do actually, but try this:

$query = "SELECT id FROM xtags WHERE tag_id = '".$tagid."' ORDER BY RAND() Limit 2";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){

            $query2 = "SELECT * FROM xtable WHERE id = '".intval($row[id])."'";
            $result2 = mysql_query($query2) or die(mysql_error());
            $row2 = mysql_fetch_assoc($result2);
            echo $row2[title];

}

Upvotes: 0

Galled
Galled

Reputation: 4206

I don't know if is ok, but you are using $result twice, one before the "while" and another inside the "while".

I would personally split the string and the variable $row.

Why not use var_dump() to see $row and the other variables ???

Upvotes: 0

Nick
Nick

Reputation: 6965

You're reusing the $result variable inside the loop which overwrites the value for use in the while condition. Use a different name for $query and $result inside the loop.

Upvotes: 2

John Boker
John Boker

Reputation: 83729

$result is being used inside the loop and outside, try making a new variable inside and not reusing the outside one.

Upvotes: 4

Related Questions