Hello everybody, Having an issue where I am getting unexpected results with a simple query and at a lost to explain why.
At the end is my code. The problem I believe though I have narrowed down to the following statement. 1. When I run SELECT accounts.id, accounts.action, people.last, people.first, people.rank FROM accounts JOIN people WHERE (accounts.account = people.id OR accounts.id = people.id) AND accounts.status='submitted'; directly into mysql (NOT USING PHP) I get the proper results. (1 row) 2. When I run it below using PHP I get unexpected results. (All 4 rows) Database looks like: -----ACCOUNTS------- ID ACTION STATUS DATE_SUBMITTED ACCOUNT 1 create pending NULL 56 2 modify pending NULL 58 3 new pending NULL 65 4 delete submitted 2002-09-10 89 ----PEOPLE---------- ID LAST FIRST RANK 56 A GUY NULL 58 B GUY NULL 65 C GUY NULL 89 D GUY NULL AFTER JOIN STATEMENT SHOULD LOOK LIKE: (when ran directly with mysql bypassing PHP) ID ACTION LAST FIRST RANK 4 delete D GUY NULL Instead I am getting (when using below code): (when ran with PHP) ID ACTION LAST FIRST RANK 1 create A GUY NULL 2 modify B GUY NULL 3 new C GUY NULL 4 delete D GUY NULL Debugging: Have did mysql_num_rows($query); on the JOIN query and it returns 1 so it is returning the proper number of rows. Have also added an iterator to the while($row) to verify loop count == row count. This also returns 1=1 Yet somehow the 'users' file has ALL 4 entries in it at end of the run. At a complete loss how this can be so. Any help on this would be appreciated. Thanks, -Peter ##### START CODE ########### require_once 'auth.php'; $date=date("ymd"); if (isset($submit)){ foreach ($submit as $value){ digit($value); mysql_query("UPDATE accounts SET status='submitted', date_submitted='$date' WHERE id=$value;"); } } $query=mysql_query("SELECT site, address FROM unit WHERE name='$unit'"); $row=mysql_fetch_array($query); extract($row); $query=mysql_query("SELECT accounts.id, accounts.action, people.last, people.first, people.rank FROM accounts JOIN people WHERE (accounts.account = people.id OR accounts.id = people.id) AND accounts.status='submitted';"); if (mysql_num_rows($query)>0){ $fp=fopen('users', 'w'); while ($row=mysql_fetch_array($query)){ extract($row); $s="MAILBOX"; $s.="\t$action"; $s.="\tKFOR\\$last".substr($first,0,1); $s.="\t$last".substr($first,0,1); $s.="\t$first"; $s.="\t$last"; $s.=isset($middle)?"\t$middle":''; $s.="\t$rank"; $s.="\tBONDSTEEL2"; $s.="\t$last, $first"; $s.=isset($middle)?"$middle.":''; $s.=" $rank"; $s.=$rank=='CIV'?$unit:''; $s.="\t$phone"; $s.="\t$unit"; $s.="\t$address, $site"; $s.="\tYugo"; $s.="\t09340"; $s.="\tAE"; $s.="\tAPO\n"; fwrite($fp, $s); } fclose($fp); unlink('users'); } ################################## Peter Thoenen - Systems Programmer Commercial Communications Camp Bondsteel, Kosovo ################################## "Stumbled Upon"...heh (Score:5, Funny) /. by $carab on 23:00 23 August 2002 (#4131637) "ForensicTec officials said they stumbled upon the military networks about two months ago, while checking on network security for a private-sector client." Someone new to a Dvorak probably tried to type in "lynx http://www.google.com" but instead got "nmap -v -p 1-1024 -sS -P0 army.mil -T paranoid". -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php