Re: Empty string problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux