From:             floriparob at gmail dot com
Operating system: Debian 64bit 3.2.0-2
PHP version:      5.4.4
Package:          PostgreSQL related
Bug Type:         Bug
Bug description:Null values for insert/update statements

Description:
------------
Actually using PHP 5.4.0.3 but this was not in the drop down list above.

Null is a perfectly valid value for a column. However, PHP fails to submit
the correct values when it builds the SQL query and submits it to the
postmaster.
I don't have this problem with Java and the Postgres jdbc driver.
Consider the following DDL:-

create table table_a (
tablea_id serial not null primary key,
col_a varchar(20),
col_b integer,
col_c boolean default false);

In my class for table_a I have:-

update table_a set col_a = 'this->colA', col_b = this->colB,
col_c = this->colC where tablea_id = $something;

In my action I might set a value -- setcolA('some value');
If this->colB IS NULL, then PHP doesn't detect this fact, generates the
following SQL which fails because of syntax errors.

update table_a set col_a = 'some value', col_b = , col_c = where tablea_id
= 3;

It should generate:-

update table_a set col_a = 'some value', col_b = null, col_c = null where
tablea_id = 3;

The failure to detect boolean's and treat them appropriately is another
pain in the neck. You are using pg_query, you KNOW it's a Postgres
database, you should KNOW that Postgres creates boolean columns as char(1),
and that it uses a 't' to represent "true" and a 'f' to represent "false".
To overcome this failure I had to do the following in my class:-

$my_bool = this->colC? 't' : 'f';

and then use '$my_bool' instead of this->colC in the insert and update
statements.

Imagine if you had dozens of boolean type columns in a table. A nightmare.
It is quite common in applications where users belong to groups and a group
has a set of privileges, and those privileges are usually held as boolean
value's.



---
>From manual page:
http://www.php.net/function.pg-query#refsect1-function.pg-query-description
---


Actual result:
--------------
[Thu Jun 21 02:50:31 2012] [error] [client 127.0.0.1] PHP Warning: 
pg_query(): Query failed: ERROR:  syntax error at or near
","\nLINE 5:            '', 'Kemly plus vistors to look at
house', , 0,\n                                                             
^ in /var/www/timemanager.info/public_html/classes/AppointMents.php on line
133, referer: http://dev.timemanager.info/addchgappnts.html


-- 
Edit bug report at https://bugs.php.net/bug.php?id=62405&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=62405&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=62405&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=62405&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=62405&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=62405&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=62405&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=62405&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=62405&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=62405&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=62405&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=62405&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=62405&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=62405&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=62405&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=62405&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=62405&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=62405&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=62405&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=62405&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=62405&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=62405&r=mysqlcfg

Reply via email to