Re: [PHP-DB] DB interface problem
Why not using PDO ? It is a global and standardized method to access to data. :-) 2009/10/27 Giff Hammar gham...@sv-phoenix.com: I started having trouble with a DBI interface to my PostgreSQL database after I built a new Ubuntu machine. The Postgres version is 8.3 and the DBI was written several years ago (by someone else). I'm using PHP version 5.2.6-3ubuntu4.2 with apache2. The problem is that I get the error: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/www/lib/dbi_pgsql.php on line 202 I don't know what to check next to figure out why this is happening. Here is what I have done so far: - Updated the old PHP commands in the dbi file to reflect new ones var - public pg_numrows - pg_num_rows pg_cmdtuples - pg_affected_rows pg_exec - pg_execute - Connected to the database as the same user by using straight PHP calls vs the DBI. It worked fine. - Connected to the database via psql and that worked fine, too. There is something with the DBI class that is not right, but I am a novice with objects and classes, so I can't pin it down. The whole file is here: http://www.sv-phoenix.com/dbi_pgsql.php - it's 205 lines so I didn't want to put the whole thing in this post. If anyone can take a look at it and let me know what to check next, I would really appreciate it. Giff -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] DB interface problem
Thanks for the suggestion. I'll need to look into it. Giff On Wed, 2009-10-28 at 11:23 +0100, Samuel ROZE wrote: Why not using PDO ? It is a global and standardized method to access to data. :-) 2009/10/27 Giff Hammar gham...@sv-phoenix.com: I started having trouble with a DBI interface to my PostgreSQL database after I built a new Ubuntu machine. The Postgres version is 8.3 and the DBI was written several years ago (by someone else). I'm using PHP version 5.2.6-3ubuntu4.2 with apache2. The problem is that I get the error: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/www/lib/dbi_pgsql.php on line 202 I don't know what to check next to figure out why this is happening. Here is what I have done so far: - Updated the old PHP commands in the dbi file to reflect new ones var - public pg_numrows - pg_num_rows pg_cmdtuples - pg_affected_rows pg_exec - pg_execute - Connected to the database as the same user by using straight PHP calls vs the DBI. It worked fine. - Connected to the database via psql and that worked fine, too. There is something with the DBI class that is not right, but I am a novice with objects and classes, so I can't pin it down. The whole file is here: http://www.sv-phoenix.com/dbi_pgsql.php - it's 205 lines so I didn't want to put the whole thing in this post. If anyone can take a look at it and let me know what to check next, I would really appreciate it. Giff -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] DB interface problem
Hi Giff, I want to have a look at this for you, but you'll need to put the file on your server as plain-text because your server is parsing the PHP code and only sending us the output, not the source code. Append *.txt to your file on the server and we should be able to see it better! Andy On 27 October2009, at 12:48, Giff Hammar wrote: I started having trouble with a DBI interface to my PostgreSQL database after I built a new Ubuntu machine. The Postgres version is 8.3 and the DBI was written several years ago (by someone else). I'm using PHP version 5.2.6-3ubuntu4.2 with apache2. The problem is that I get the error: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/www/lib/dbi_pgsql.php on line 202 I don't know what to check next to figure out why this is happening. Here is what I have done so far: - Updated the old PHP commands in the dbi file to reflect new ones var - public pg_numrows - pg_num_rows pg_cmdtuples - pg_affected_rows pg_exec - pg_execute - Connected to the database as the same user by using straight PHP calls vs the DBI. It worked fine. - Connected to the database via psql and that worked fine, too. There is something with the DBI class that is not right, but I am a novice with objects and classes, so I can't pin it down. The whole file is here: http://www.sv-phoenix.com/dbi_pgsql.php - it's 205 lines so I didn't want to put the whole thing in this post. If anyone can take a look at it and let me know what to check next, I would really appreciate it. Giff -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] DB interface problem
Andy, Sometimes I'm too fast for my own good. I added .txt to the file and it should be visible as http://www.sv-phoenix.com/dbi_pgsql.txt. Just appending the .txt didn't work. Thanks for taking a look! Giff On Tue, 2009-10-27 at 17:49 +, Andy Shellam (Mailing Lists) wrote: Hi Giff, I want to have a look at this for you, but you'll need to put the file on your server as plain-text because your server is parsing the PHP code and only sending us the output, not the source code. Append *.txt to your file on the server and we should be able to see it better! Andy On 27 October2009, at 12:48, Giff Hammar wrote: I started having trouble with a DBI interface to my PostgreSQL database after I built a new Ubuntu machine. The Postgres version is 8.3 and the DBI was written several years ago (by someone else). I'm using PHP version 5.2.6-3ubuntu4.2 with apache2. The problem is that I get the error: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/www/lib/dbi_pgsql.php on line 202 I don't know what to check next to figure out why this is happening. Here is what I have done so far: - Updated the old PHP commands in the dbi file to reflect new ones var - public pg_numrows - pg_num_rows pg_cmdtuples - pg_affected_rows pg_exec - pg_execute - Connected to the database as the same user by using straight PHP calls vs the DBI. It worked fine. - Connected to the database via psql and that worked fine, too. There is something with the DBI class that is not right, but I am a novice with objects and classes, so I can't pin it down. The whole file is here: http://www.sv-phoenix.com/dbi_pgsql.php - it's 205 lines so I didn't want to put the whole thing in this post. If anyone can take a look at it and let me know what to check next, I would really appreciate it. Giff -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] DB interface problem
Hi Giff, No worries - I know the feeling well! At first glance this looks OK, however I notice that there is no res property defined in the STH class, like there is session and query. $this-res on line 202 is what's causing the issue - PHP is saying it's not a valid PostgreSQL result resource, so if you trace back to where that comes from, you get to line 175: $this-res = @pg_execute($this-session, $query); PHP is therefore trying to assign a query result to a property that doesn't exist. I would have expected PHP to throw an error at this but it may have been obscured with your logging settings, I'm not sure. Try adding public $res; after line 85 and see what you get. You could also add var_dump($this-res); between lines 175 and 176 which should tell you what PHP thinks $this-res is. And lastly, you could get a back-trace of the rows() method call to see if it's being called before $this-res has been assigned - just add the line var_dump(debug_backtrace()); between lines 201 and 202. Hope this gives you a starting pointer! Regards, Andy On 27 October2009, at 19:36, Giff Hammar wrote: Andy, Sometimes I'm too fast for my own good. I added .txt to the file and it should be visible as http://www.sv-phoenix.com/dbi_pgsql.txt. Just appending the .txt didn't work. Thanks for taking a look! Giff On Tue, 2009-10-27 at 17:49 +, Andy Shellam (Mailing Lists) wrote: Hi Giff, I want to have a look at this for you, but you'll need to put the file on your server as plain-text because your server is parsing the PHP code and only sending us the output, not the source code. Append *.txt to your file on the server and we should be able to see it better! Andy On 27 October2009, at 12:48, Giff Hammar wrote: I started having trouble with a DBI interface to my PostgreSQL database after I built a new Ubuntu machine. The Postgres version is 8.3 and the DBI was written several years ago (by someone else). I'm using PHP version 5.2.6-3ubuntu4.2 with apache2. The problem is that I get the error: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/www/lib/dbi_pgsql.php on line 202 I don't know what to check next to figure out why this is happening. Here is what I have done so far: - Updated the old PHP commands in the dbi file to reflect new ones var - public pg_numrows - pg_num_rows pg_cmdtuples - pg_affected_rows pg_exec - pg_execute - Connected to the database as the same user by using straight PHP calls vs the DBI. It worked fine. - Connected to the database via psql and that worked fine, too. There is something with the DBI class that is not right, but I am a novice with objects and classes, so I can't pin it down. The whole file is here: http://www.sv-phoenix.com/dbi_pgsql.php - it's 205 lines so I didn't want to put the whole thing in this post. If anyone can take a look at it and let me know what to check next, I would really appreciate it. Giff -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] DB interface problem
Andy Shellam (Mailing Lists) wrote: Hi Giff, No worries - I know the feeling well! At first glance this looks OK, however I notice that there is no res property defined in the STH class, like there is session and query. $this-res on line 202 is what's causing the issue - PHP is saying it's not a valid PostgreSQL result resource, so if you trace back to where that comes from, you get to line 175: $this-res = @pg_execute($this-session, $query); PHP is therefore trying to assign a query result to a property that doesn't exist. I would have expected PHP to throw an error at this but it may have been obscured with your logging settings, I'm not sure. Close - the '@' before pg_execute is hiding the notice/warning. I'd say check your database username/password are correct. $this-session is probably not a postgres resource. -- Postgresql php tutorials http://www.designmagick.com/ -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] DB interface problem
Hi Chris, $this-res = @pg_execute($this-session, $query); PHP is therefore trying to assign a query result to a property that doesn't exist. I would have expected PHP to throw an error at this but it may have been obscured with your logging settings, I'm not sure. Close - the '@' before pg_execute is hiding the notice/warning. I'd say check your database username/password are correct. Yeah I noticed that, but the line below it does a check to see if the pg_execute command succeeded, and if it didn't it kills the script, but that's not happening - it's getting further down the line, which is why I think $this-res is not being persisted across method calls. Andy
Re: [PHP-DB] DB interface problem
Andy, Thanks for your help! The var_dump after the pg_execute showed that the execute() method wasn't being called (I left a line out of the calling script). Once I fixed that, I changed pg_execute back to pg_exec and it worked as expected. Now I have to figure out the difference between pg_exec and pg_execute... From what I can tell, pg_exec isn't supported any more and I should be using pg_execute instead... Thanks again. Giff On Tue, 2009-10-27 at 19:51 +, Andy Shellam (Mailing Lists) wrote: Hi Giff, No worries - I know the feeling well! At first glance this looks OK, however I notice that there is no res property defined in the STH class, like there is session and query. $this-res on line 202 is what's causing the issue - PHP is saying it's not a valid PostgreSQL result resource, so if you trace back to where that comes from, you get to line 175: $this-res = @pg_execute($this-session, $query); PHP is therefore trying to assign a query result to a property that doesn't exist. I would have expected PHP to throw an error at this but it may have been obscured with your logging settings, I'm not sure. Try adding public $res; after line 85 and see what you get. You could also add var_dump($this-res); between lines 175 and 176 which should tell you what PHP thinks $this-res is. And lastly, you could get a back-trace of the rows() method call to see if it's being called before $this-res has been assigned - just add the line var_dump(debug_backtrace()); between lines 201 and 202. Hope this gives you a starting pointer! Regards, Andy On 27 October2009, at 19:36, Giff Hammar wrote: Andy, Sometimes I'm too fast for my own good. I added .txt to the file and it should be visible as http://www.sv-phoenix.com/dbi_pgsql.txt. Just appending the .txt didn't work. Thanks for taking a look! Giff On Tue, 2009-10-27 at 17:49 +, Andy Shellam (Mailing Lists) wrote: Hi Giff, I want to have a look at this for you, but you'll need to put the file on your server as plain-text because your server is parsing the PHP code and only sending us the output, not the source code. Append *.txt to your file on the server and we should be able to see it better! Andy On 27 October2009, at 12:48, Giff Hammar wrote: I started having trouble with a DBI interface to my PostgreSQL database after I built a new Ubuntu machine. The Postgres version is 8.3 and the DBI was written several years ago (by someone else). I'm using PHP version 5.2.6-3ubuntu4.2 with apache2. The problem is that I get the error: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/www/lib/dbi_pgsql.php on line 202 I don't know what to check next to figure out why this is happening. Here is what I have done so far: - Updated the old PHP commands in the dbi file to reflect new ones var - public pg_numrows - pg_num_rows pg_cmdtuples - pg_affected_rows pg_exec - pg_execute - Connected to the database as the same user by using straight PHP calls vs the DBI. It worked fine. - Connected to the database via psql and that worked fine, too. There is something with the DBI class that is not right, but I am a novice with objects and classes, so I can't pin it down. The whole file is here: http://www.sv-phoenix.com/dbi_pgsql.php - it's 205 lines so I didn't want to put the whole thing in this post. If anyone can take a look at it and let me know what to check next, I would really appreciate it. Giff -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] DB interface problem
Hi Giff, Glad you got it sorted! pg_exec() is the old (and deprecated) name for pg_query - this behaves differently to pg_execute. pg_execute runs a SQL statement that has previously been prepared with a call to pg_prepare, while pg_query runs a SQL query directly. http://www.php.net/manual/en/function.pg-prepare.php http://www.php.net/manual/en/function.pg-query.php After a quick glance through your code, I think pg_query is what you want. HTH, Andy On 27 October2009, at 22:06, Giff Hammar wrote: Andy, Thanks for your help! The var_dump after the pg_execute showed that the execute() method wasn't being called (I left a line out of the calling script). Once I fixed that, I changed pg_execute back to pg_exec and it worked as expected. Now I have to figure out the difference between pg_exec and pg_execute... From what I can tell, pg_exec isn't supported any more and I should be using pg_execute instead... Thanks again. Giff On Tue, 2009-10-27 at 19:51 +, Andy Shellam (Mailing Lists) wrote: Hi Giff, No worries - I know the feeling well! At first glance this looks OK, however I notice that there is no res property defined in the STH class, like there is session and query. $this-res on line 202 is what's causing the issue - PHP is saying it's not a valid PostgreSQL result resource, so if you trace back to where that comes from, you get to line 175: $this-res = @pg_execute($this-session, $query); PHP is therefore trying to assign a query result to a property that doesn't exist. I would have expected PHP to throw an error at this but it may have been obscured with your logging settings, I'm not sure. Try adding public $res; after line 85 and see what you get. You could also add var_dump($this-res); between lines 175 and 176 which should tell you what PHP thinks $this-res is. And lastly, you could get a back-trace of the rows() method call to see if it's being called before $this-res has been assigned - just add the line var_dump(debug_backtrace()); between lines 201 and 202. Hope this gives you a starting pointer! Regards, Andy On 27 October2009, at 19:36, Giff Hammar wrote: Andy, Sometimes I'm too fast for my own good. I added .txt to the file and it should be visible as http://www.sv-phoenix.com/dbi_pgsql.txt. Just appending the .txt didn't work. Thanks for taking a look! Giff On Tue, 2009-10-27 at 17:49 +, Andy Shellam (Mailing Lists) wrote: Hi Giff, I want to have a look at this for you, but you'll need to put the file on your server as plain-text because your server is parsing the PHP code and only sending us the output, not the source code. Append *.txt to your file on the server and we should be able to see it better! Andy On 27 October2009, at 12:48, Giff Hammar wrote: I started having trouble with a DBI interface to my PostgreSQL database after I built a new Ubuntu machine. The Postgres version is 8.3 and the DBI was written several years ago (by someone else). I'm using PHP version 5.2.6-3ubuntu4.2 with apache2. The problem is that I get the error: Warning: pg_num_rows(): supplied argument is not a valid PostgreSQL result resource in /var/www/lib/dbi_pgsql.php on line 202 I don't know what to check next to figure out why this is happening. Here is what I have done so far: - Updated the old PHP commands in the dbi file to reflect new ones var - public pg_numrows - pg_num_rows pg_cmdtuples - pg_affected_rows pg_exec - pg_execute - Connected to the database as the same user by using straight PHP calls vs the DBI. It worked fine. - Connected to the database via psql and that worked fine, too. There is something with the DBI class that is not right, but I am a novice with objects and classes, so I can't pin it down. The whole file is here: http://www.sv-phoenix.com/dbi_pgsql.php - it's 205 lines so I didn't want to put the whole thing in this post. If anyone can take a look at it and let me know what to check next, I would really appreciate it. Giff -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php