PHP 5.6.0beta1 released

pg_select

(PHP 4 >= 4.3.0, PHP 5)

pg_select Effectue une sélection PostgreSQL

Description

mixed pg_select ( resource $connection , string $table_name , array $assoc_array [, int $options = PGSQL_DML_EXEC ] )

pg_select() sélectionne les enregistrements par assoc_array qui est au format champ=>valeur. Lorsque la requête réussit, elle retourne un tableau contenant tous les enregistrements et champs qui vérifient la condition spécifiée par assoc_array.

Si options est spécifiée, pg_convert() est appliquée à assoc_array avec les drapeaux spécifiés.

Avertissement

Cette fonction est EXPERIMENTALE. Cela signifie que le comportement de cette fonction, son nom et, concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS ! Soyez-en conscient, et utilisez cette fonction à vos risques et périls.

Liste de paramètres

connection

Ressource de connexion de base de données PostgreSQL.

table_name

Nom de la table dans laquelle on sélectionne les lignes.

assoc_array

Un tableau à qui les clés sont les noms des champs dans la table table_name et à qui les valeurs sont les conditions que la ligne doit vérifier pour être récupérée.

options

N'importe quelle de PGSQL_CONV_FORCE_NULL, PGSQL_DML_NO_CONV, PGSQL_DML_EXEC, PGSQL_DML_ASYNC ou PGSQL_DML_STRING combinée. Si PGSQL_DML_STRING fait partie de options alors la requête est retournée sous forme de chaîne de caractères.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient. Retourne une chaîne de caractères si PGSQL_DML_STRING est passé via options.

Exemples

Exemple #1 Exemple avec pg_select()

<?php 
  $db 
pg_connect ('dbname=foo');
  
// C'est sécuritaire, car $_POST est converti automatiquement
  
$rec pg_select($db'post_log'$_POST);
  if (
$rec) {
    echo 
"Lignes lues\n";
    
var_dump($rec);
  } else {
    echo 
"Problème dans les données utilisateur\n";
  }
?>

Historique

Version Description
5.5.3/5.4.19 Les injections SQL directes dans table_name et les injections SQL indirectes via les identifiants ont été résolues.

Voir aussi

  • pg_convert() - Convertit des tableaux associatifs en une commande PostgreSQL

add a note add a note

User Contributed Notes 2 notes

up
1
wietse at cj2 dot nl
8 years ago
David mentioned that you can't do a Select all.
However, when executing this script:
<?php
    $conn_string
= "dbname=mydb";
   
$db = pg_connect($conn_string);
   
$selectfields = array("imgid" => "");
   
$records = pg_select($db,"mmsfiles",$selectfields);
   
print_r($records);
?>
...I get this result:
Array
(
    [0] => Array
        (
            [imgid] => 1
            [file] => /home/wietse/public_html/mms/images/1.gif
            [thumb] =>
        )
    [1] => Array
        (
            [imgid] => 2
            [file] => /home/wietse/public_html/mms/images/2.gif
            [thumb] =>
        )
    [2] => Array
        (
            [imgid] => 3
            [file] => /home/wietse/public_html/mms/images/3.gif
            [thumb] =>
        )
    [3] => Array
        (
            [imgid] => 4
            [file] => /home/wietse/public_html/mms/images/4.gif
            [thumb] =>
        )
)
up
1
david dot tulloh at infaze dot com dot au
8 years ago
Valid options are PGSQL_DML_NO_CONV, PGSQL_DML_EXEC, PGSQL_DMP_ASYNC, PGSQL_DML_STRING (pulled out of source code).

This function does not support selecting from multiple tables.  You can get around this by setting the PGSQL_DML_NO_CONV option.  This prevents the error which occurs when the function tries to convert the condition array.

I think it is also important to point out that the table_name field is not safe, particularily with the PGSQL_DML_NO_CONV option.

The arguements array field is compulsory, as documented.  What isn't so clear is that the array has to actually have some values in it, you can't do a select all.

In summary, this function is good for a very small subset of basic queries.  If you are after anything more complex you are better off with pg_query.
To Top