PHP 4.0 Bug #7141 Updated: pg_exec returns true even though it failed

From: Date: Sat, 28 Oct 2000 04:01:43 +0000
Subject: PHP 4.0 Bug #7141 Updated: pg_exec returns true even though it failed
Groups: php.dev 
Request: Send a blank email to php-dev+get-36184@lists.php.net to get a copy of this message
ID: 7141 Updated by: jah Reported By: dbi@xmission.com Status: Closed Bug Type: PostgreSQL related Assigned To: Comments: I agree that the docs could be a bit more clear about the return value of pg_exec(). But this is *not* a bug. Even a SELECT that doesn't return any rows still succeeds and returns a resource id. You'll have to test whether it returned any rows with pg_numrows(). See the example of pg_fetch_row() in manual. pg_exec() returns FALSE in the case that the query couldn't be executed at all, for example because it was malformed or the PostgreSQL server itself encountered some other error (no privileges to select from a table etc.). Previous Comments: --------------------------------------------------------------------------- [2000-10-11 17:26:37] dbi@xmission.com When I execute the following code segment with the $EmailAddress and $Password variables set to values that exist in the PostgreSQL 6.5.3 table, everything works fine. When I execute it with values that are NOT in the table, pg_exec still returns a "true" value even though the SELECT statement never found any matching rows. (This is contrary to what the documentation implies when it tests for !$result.) The actual value of the $query variable, even when the query sent by the pg_exec function fails, is "Resource id #2". Because it's not falst, there's no way to test whether the query succeeded. So when the program goes on to execute the pg_fetch_array function, the $query variable points to nothing and the program dies with an error message. ------------------------------- <?php // -- This module checks a username and password to see who the user is.) $db = pg_connect("", "", "", "", "tracker"); if ($db) { $SQLQuery = "SELECT userid FROM users WHERE username = '" . $EmailAddress . "' AND password = '" . $Password . "';"; $query = pg_exec($db, $SQLQuery); if ($query) { $row = 0; if ($data = pg_fetch_array($query, $row)) { // Etc... --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=7141

« previous php.dev (#36184) next »