[SOLVED] Re: problem - query inside a function

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

 



Thanks to Karen and Richard for your help!

I removed the quotes around 0 in the comparison for mysql_affected_rows.
That was definitely important.

I then added the echo $sql; statement Richard recommended, and saw the
following:
(save some time and just look at the end of the string)

 SELECT * FROM contact_info WHERE zipcode='86345' AND
email="tk@kitaen"&result=Fail&errorMsg=We+do+not+have+the+given+email+and+zi
pcode+on+file.++Please+go+to+the+menu+and+start+again.&result=Edit

I had completely missed that!  That was overriding my &result=Fail earlier
in the string, so naturally it was going to the edit page.  Doh!

Looking thru my code I had a hard time figuring it out (although it's seems
simple now):

1 function getEditData($email,$zipcode) {
2   $sql = "SELECT * FROM contact_info WHERE zipcode='$zipcode' AND
email=\"{$email}\"";
3    echo $sql;
4    $query = mysql_query($sql);
5    if (mysql_affected_rows()==0) {
6      $this->sendResult("Fail","We do not have the given email and zipcode
on file.  Please go to the menu and start again.");
7    } else {
8       //a bunch of variables declared here so I pulled them out for space
9    $this->sendResult("Edit",$varsToEdit);
10  }

Even though I was invoking the function sendResult for the failure, the code
was continuing on to the NEXT sendResult which was giving the Edit message.
Here is the sendResult function:

11 function sendResult($result,$txtMsg) {
12    switch ($result) {
13    case "Okay":
14        $txtMsg = urlencode($txtMsg);
15       print "&result=Okay&successMsg=" . $txtMsg;
16        break;
17      case "Fail":
18        $txtMsg = urlencode($txtMsg);
19        print "&result=Fail&errorMsg=" . $txtMsg;
20        break;
21      case "Edit":
22        print "&result=Edit&" . $txtMsg;
23        break;
24    }
25  }

So result was being sent twice, and the second value(sent on line 22) for
result overrode the first (on line19)!!!!  The Solution?  Add a break;
inside the first "if" after line 6.  Problem solved because the script stops
(which it should at that point).

WOW, I hope you guys don't mind me sharing all of that, maybe it will help
somebody else in the future - make sure you terminate your failure cases if
you're calling another function to handle the job.

Thanks again for the help :)

Kirk

-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux