One should take care when checking the return value.
0 == false which is not equal with failed delete.
if(!$res)
echo "Nothing was deleted";
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
pg_delete — Efface des lignes PostgreSQL
$connection
,$table_name
,$conditions
,$flags
= PGSQL_DML_EXEC
pg_delete() efface les lignes d'une table spécifiées par
les clés et valeur du tableau associatif conditions
.
Si flags
est fournit,
pg_convert() est appliqué à
conditions
avec les drapeaux fournit.
Par défaut pg_delete() passe des valeurs brutes.
Les valeurs doivent être échappé ou le drapeau PGSQL_DML_ESCAPE
doit être spécifié dans flags
.
PGSQL_DML_ESCAPE
met des guillemets et échappe les paramètres/identifiants.
Par conséquent, les noms de table/colonnes deviennent sensible à la casse.
Notez que ni l'échappement ni les requêtes préparer peuvent protéger des requêtes LIKE, JSON, Tableaux, Regex, etc. Ces paramètres devraient être traité en fonction de leur contexte. C'est à dire échapper/valider les valeurs.
connection
Une instance PgSql\Connection.
table_name
Nom de la table depuis laquelle les lignes seront effacées.
conditions
Un tableau où les clés sont les noms des champs de la table
table_name
et où les valeurs sont les valeurs
de ces champs qui sont à effacés.
flags
Toute combinaison des valeurs suivantes :
PGSQL_CONV_FORCE_NULL
,
PGSQL_DML_NO_CONV
,
PGSQL_DML_ESCAPE
,
PGSQL_DML_EXEC
,
PGSQL_DML_ASYNC
ou
PGSQL_DML_STRING
.
Si PGSQL_DML_STRING
fait partie du paramètre
flags
alors, la requête sera retournée.
Lorsque la constante PGSQL_DML_NO_CONV
ou la constante
PGSQL_DML_ESCAPE
est définie,aucun appel à la fonction
pg_convert() ne sera faite en interne.
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é dans le paramètre flags
.
Version | Description |
---|---|
8.1.0 |
Le paramètre connection attend désormais une instance de
PgSql\Connection ; auparavant, une ressource était attendu.
|
Exemple #1 Exemple avec pg_delete()
<?php
$db = pg_connect ('dbname=foo');
// Ceci est sûr quelque peu, car toutes les valeurs sont échappées
// Cependant PostgreSSQL supporte les JSON/Tableaux. Ceci ne sont pas
// sûr ni par échappement ni par les requêtes préparés.
$res = pg_delete($db, 'post_log', $_POST, PG_DML_ESCAPE);
if ($res) {
echo "Les données POSTées ont été effacées : $res\n";
} else {
echo "Les données d'entrées sont erronées.\n";
}
?>