Kristen G. Thorson wrote: > Following is a snippet of code that I am trying to debug. Most of the > time, the variable $sn (set on the last line), correctly contains the > variable $this_customer_num. On some occasions, however, it does not > contain $this_customer_num. I cannot figure out what may be happening > that this value is missing around 1-10% of the time. > > > <?php > > $memberchecker=mysql_query("SELECT id, password, customer_num FROM > logins WHERE email = '$email'" ); > //email is unique and not null > > if (!$memberchecker) { > //handle error > > } else { > > if (mysql_num_rows($memberchecker) >= 1) { > > while ($row = mysql_fetch_array($memberchecker)) { > > $this_login_password=$row[password]; > > if ($this_login_password==$password) { > //$password is a form variable (yes register_globals is > on...*sigh*) > > $this_customer_num=$row[customer_num]; > > $companycheck=mysql_query("SELECT priority, cash_price > FROM customers WHERE customer_num='$this_customer_num'"); //customer_num > is primary key, so unique and not null > > if (!$companycheck) { > > //handle error > > } else { > > if (mysql_num_rows($companycheck) == 1) { > > while ($cow = mysql_fetch_array($companycheck)) { > > $id=$row[id]; > $priority=$cow[priority]; > $cp=$cow[cash_price]; > $sn=date(Sz).$this_customer_num.time(); > ?> > > > Before anyone yells at me, no I did not write this code. I first > thought there might be a problem with the array keys not being quoted, > but if that were the case, and an empty string were assigned to > $this_customer_num, then I should not be able to pass the second query, > since there are no empty string customer_num entries (all of them are at > least 9 characters in length). > > I have been unable to reproduce an instance where $sn is missing the > $this_customer_num variable, and I'm stuck in a kind of political > situation where I can only make recommendations, and not change the code > myself. > > Suggestions on where to start looking? Thanks in advance. > $companycheck can easily be non-false and contain no rows. A query that doesn't match any rows is not a failure, it is simply an empty result set. So you wouldn't get into the //handle error code there and your mysql_num_rows() wouldn't be 1. This would appear to be possible if there was some sort of mismatch between the customer ids in the login table and the customers table. A bit more error checking should make it obvious. -Rasmus -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php