Re: [Phplib-users] HELP! php-mysql weirdness
Brought to you by:
nhruby,
richardarcher
|
From: nathan r. h. <na...@ds...> - 2001-09-20 17:13:56
|
On Thu, 20 Sep 2001, Stephen Woodbridge wrote:
> Bizzare, but true!
>
> Here is what I think the problem is.
>
> The column BIRT_PLAC may be NULL so the result set has a row with the
> value of NULL unless you use the WHERE clause. The problem is the that
> the
>
> while($row = mysql_fetch_array($result))
>
> terminates the the while when it returns the NULL row result and the
> ORDER BY always place the NULL row result as the first row in the result
> set. Even more insidious would be an unsorted result that returns some
> row of data, then a NULL, then more rows of data. So you would get some
> rows, thnk things are great and not realize that you never processed the
> rest of the rows. Which is exactly what happens in my testing of this
> problem.
>
> This is VERY BAD! I use this type of construct ALL through my code.
>
> Any thoughts or comments?
>
add NOT NULL to your WHERE clause
> -Stephen Woodbridge
>
> Stephen Woodbridge wrote:
> >
> > Hi all,
> >
> > Sorry this is a little off topic, but I'm can't figure this one out and
> > someone here might have run into this problem.
> >
> > I have a SQL query to mysql from php3, the query has an optional WHERE
> > clause. I get results back if the where clause is included but none if
> > it is left out.
> >
> > select distinct BIRT_PLAC as PLACE from INDI where BIRT_PLAC like "%%"
> > order by PLACE
> > num=719
> >
> > select distinct BIRT_PLAC as PLACE from INDI order by PLACE
> > num=0
> >
> > BOTH queries work FINE if I cut and paste them into mysql directly.
> > Anyone have any ideas?
> > -Steve
> >
> > function Places($str) {
> > global $conn;
> >
> > $aPlaces = array();
> >
> > $sql = "select distinct BIRT_PLAC as PLACE from INDI ";
> > if ($str != "")
> > $sql .= "where BIRT_PLAC like \"%$str%\" ";
> > $sql .= "order by PLACE ";
> >
> > print "<br>$sql<br>\n";
> > $result = @mysql_query($sql, $conn)
> > or die("Can't execute query: $sql ! $php_errormsg");
> >
> > $num = 0;
> > while ($row = mysql_fetch_array($result)) {
> > $aPlaces[] = $row["PLACE"];
> > $num++;
> > }
> > print "num=$num<br>\n";
> > }
> >
>
> _______________________________________________
> Phplib-users mailing list
> Php...@li...
> https://lists.sourceforge.net/lists/listinfo/phplib-users
>
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
nathan hruby / digital statement
na...@ds...
http://www.dstatement.com/
Public GPG key can be found at:
http://www.dstatement.com/nathan-gpg-key.txt
ED54 9A5E 132D BD01 9103 EEF3 E1B9 4738 EC90 801B
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|