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 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |