Log in

View Full Version : query_first() returns desired result, while query returns nothing?


Harlequin
02-29-2004, 04:34 PM
Maybe I'm looking at this incredibly wrong, but let me explain the situation:

There are two queries I'm using to conduct a search to find out whether or not you're a member of x number of communities and to display the queried information about those communities to you.

Each community has it's own auto-incrementing ID (called commcommunityidset
) and the rows of the communityusers table fill with both the userid of the user joined and the commcommunityidset itself.

In another table, the information about the community is stored (name, creator, etc. etc. etc.)

When I use the following query below as query .. it returns nothing. When I use the query below as query_first, it returns a desired value, although naturally it's only the first one.


$commcheck = $DB_site->query("SELECT commuseridset,
commcommunityidset
FROM communityusers
WHERE commuseridset = $bbuserinfo[userid]");


I've purposely thrown a wrench in the query after the one above (aka a one or a two) just to check whether or not it returns any results.

As I've stated, query_first does wonderful except it's only the first result.

Before the next query, I've a OR commid=$commcheck[commcommunityidset] and then call this in that query in the WHERE.. so it's supposed to loop through everything the user has or so I think anyway. ;)

Am I totally helpless? I've been playing with this for a little while now and it's aggravating to have problems over something I'd thought was so simple. :)

NTLDR
02-29-2004, 04:43 PM
query_first does the while $var = $DB_site->fetch_array($var2) part for you so it gives a result, while with just query it doesn't do that, for example the following both do the same, however it makes more sense in this example to use query_first as its less work:


// query_first
$var = $DB_site->query_first("SELECT username FROM user WHERE userid = 2");

// query
$getvar = $DB_site->query("SELECT username FROM user WHERE userid = 2");

while($var = $DB_site->fetch_array($getvar)) {
// do anything you want with the data
}


The end result for both is that $var['username'] will contain the username for userid 2.

Basicly if you want to get multiple rows use query, if you want only a single row use query_first.

Kaelon
04-06-2004, 05:54 PM
query_first does the while $var = $DB_site->fetch_array($var2) part for you so it gives a result, while with just query it doesn't do that, for example the following both do the same, however it makes more sense in this example to use query_first as its less work:


// query_first
$var = $DB_site->query_first("SELECT username FROM user WHERE userid = 2");

// query
$getvar = $DB_site->query("SELECT username FROM user WHERE userid = 2");

while($var = $DB_site->fetch_array($getvar)) {
// do anything you want with the data
}


The end result for both is that $var['username'] will contain the username for userid 2.

Basicly if you want to get multiple rows use query, if you want only a single row use query_first.
So, when updating a single user account, you'll want to use query_first ? For example:

$DB_site->query("UPDATE user SET usergroupid=2, journal=0 WHERE userid=$userid")

... that's too much work, is what you're saying, and instead, I should be using...

$DB_site->query_first("UPDATE user SET usergroupid=2, journal=0 WHERE userid=$userid");

?

NTLDR
04-06-2004, 06:01 PM
UPDATE/INSERT queries allways use $DB_site->query, only select queries use $DB_sire->query_first

Kaelon
04-06-2004, 06:02 PM
Thanks, NTLDR. :) I just wanted to make sure that my queries were making sense.