pg_convert

(PHP 4 >= 4.3.0, PHP 5)

pg_convert Convert associative array values into suitable for SQL statement

Description

array pg_convert ( resource $connection , string $table_name , array $assoc_array [, int $options = 0 ] )

pg_convert() checks and converts the values in assoc_array into suitable values for use in an SQL statement. Precondition for pg_convert() is the existence of a table table_name which has at least as many columns as assoc_array has elements. The fieldnames in table_name must match the indices in assoc_array and the corresponding datatypes must be compatible. Returns an array with the converted values on success, FALSE otherwise.

Note:

Since PHP 5.6.0, it accepts boolean values. It converted to PostgreSQL boolean. String representations of boolean value is also supported. NULL is converted to PostgreSQL NULL.

Prior to PHP 5.6.0, if there are boolean fields in table_name don't use the constant TRUE in assoc_array. It will be converted to the string 'TRUE' which is no valid entry for boolean fields in PostgreSQL. Use one of t, true, 1, y, yes instead.

Parameters

connection

PostgreSQL database connection resource.

table_name

Name of the table against which to convert types.

assoc_array

Data to be converted.

options

Any number of PGSQL_CONV_IGNORE_DEFAULT, PGSQL_CONV_FORCE_NULL or PGSQL_CONV_IGNORE_NOT_NULL, combined.

Return Values

An array of converted values, or FALSE on error.

Examples

Example #1 pg_convert() example

<?php 
  $dbconn 
pg_connect('dbname=foo');
  
  
$tmp = array(
      
'author' => 'Joe Thackery',
      
'year' => 2005,
      
'title' => 'My Life, by Joe Thackery'
  
);
  
  
$vals pg_convert($dbconn'authors'$tmp);
?>

Changelog

Version Description
5.6.0 No longer experimental. Boolean/NULL data types are supported. Unknown/unsupported data types are escaped without validation. pg_convert() could be used with any data types.

See Also

Коментарии

I've found "options" possible values:

PG_CONV_CHECK - check only
PG_CONV_STRICT - raise warning for non fatal error
PG_CONV_QUOTE - add quote around values for vchar, text datetime.
PG_CONV_SLASH - add slashes if it needed.
PG_CONV_NULLCHK - check values are defined for NOT NULL fields.
PG_CONV_NO_DEFAULT - ignore default value even if value is empty string.
2003-05-12 09:28:45
http://php5.kiev.ua/manual/ru/function.pg-convert.html
Автор:
The only options that I see are:

PGSQL_CONV_IGNORE_DEFAULT  - Do not use DEAFULT value by removing field from returned array
PGSQL_CONV_FORCE_NULL - Convert to NULL if string is null string
PGSQL_CONV_IGNORE_NOT_NULL  - Ignore NOT NULL constraints

These are constants, so don't quote them or anything.
2004-03-31 11:02:34
http://php5.kiev.ua/manual/ru/function.pg-convert.html
There is a problem when using interval.
If in the array 
"time_pause" => '00:30:00'
and time_pause is an interval
the insert fails
pg_insert(): '00:30:00' does not match with  '^(@?[ \t]+)?((([-+]?[ \t]+)?[0-9]+(\.[0-9]*)?[ ...
2014-10-07 23:41:50
http://php5.kiev.ua/manual/ru/function.pg-convert.html
Автор:
This will only apply the appropriate escaping and such appropriate for embedding the PHP value into an SQL statement.

It does (by default) check for nulls when the column is marked NOT NULL, and it will complain about trying to convert strings for an integer column (floats will be truncated).

Beyond the barest checking of syntax, however, it does NOT verify that the given value is a legitimate value for the column type.

<?php
// Assuming smallints.smallintis a smallint (-32768..32767) type column
foreach([-1234,
   
1234,
   
0,
   
32767,
    -
32768,
   
32768// bogus value for smallint type
   
45.8,   // gets truncated to 45
   
400000// bogus value for smallint type
   
] as $smallint)
{
   
$tmp = ['smallint' => $smallint];
   
$vals pg_convert($dbconn'smallints', ['smallint' => $smallint]);
    echo 
$vals['"smallint"'],"\n"// Notice the column name is also made SQL-safe
}

// Assuming uuids.uuid is a UUID type column
foreach(['a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11',
   
'A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11',
   
'a0eebc999c0b4ef8bb6d6bb9bd380a11',
   
'{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}',
   
'Invalid Not-a-UUID',
   
'{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}',
   
'a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11',
    ] as 
$uuid)
{
   
$tmp = ['uuid' => $uuid];
   
$vals pg_convert($dbconn'uuids', ['uuid' => $uuid]);
    echo 
$vals['"uuid"'],"\n";
}

?>

All of the above data values will be "converted" - even the invalid ones - without complaint.
2017-07-16 05:13:56
http://php5.kiev.ua/manual/ru/function.pg-convert.html
Автор:
Another thing that's not well documented is that (as of PHP 7.0/7.1) pg_convert doesn't like non-scalar types and will fail (but not throw just emit an E_WARNING and return false) if you pass it anything other than a string or a number, including an array or something like a DateTime. If you want to insert those types, you actually have to convert those yourself.

Also, somewhat surprisingly, $table_name is not compatible with the output of pg_​escape_​identifier, or seemingly any other kind of escaping.
2018-03-23 17:57:03
http://php5.kiev.ua/manual/ru/function.pg-convert.html

    Поддержать сайт на родительском проекте КГБ