17.4.2 la fonction SimpleQuery
Cette fonction permet d'envoyer une requête sur la base de données.
17.4.2.1 Description
string simpleQuery (string $dbaccess, string $query, array|string|bool &$result = array() , bool $singlecolumn = false, bool $singleresult = false, bool|null $useStrict = null)
Cette fonction permet de récupérer facilement les données directement depuis la base de données.
17.4.2.1.1 Avertissements
La requête est exécutée directement. Il est de la responsabilité du développeur de s'assurer de la validité de la requête et d'éviter les injections.
17.4.2.2 Liste des paramètres
- (string)
dbaccess
- Les coordonnées de la base de données. Si cette valeur est vide, ce sont les coordonnées de la base Dynacase qui seront utilisées.
- (string)
query
- la requête sql a exécuter
- (array|string|bool)
result
-
La forme du résultat dépend des paramètres
singlecolumn
etsingleresult
:-
singlecolumn = false
etsingleresult = false
-
Le résultat est un tableau à deux dimensions.
Chaque rangée de premier niveau contient un tableau indexé avec les noms des colonnes retournées.Si aucun résultat pour la requête n'est trouvé, le résultat est un tableau vide.
-
singlecolumn = false
etsingleresult = true
-
Le résultat est un tableau indexé.
L'index correspond aux noms des colonnes retournées.Si aucun résultat pour la requête n'est trouvé, la valeur retournée est un tableau vide.
-
singlecolumn = true
etsingleresult = false
-
Le résultat est un tableau.
Chaque élément du tableau contient la valeur de la première colonne duselect
.Si aucun résultat pour la requête n'est trouvé, la valeur retournée est un tableau vide.
-
singlecolumn = true
etsingleresult = true
-
Le résultat est une chaîne de caractère.
Elle contient la valeur de la première colonne du premier résultat trouvé.Si aucun résultat pour la requête n'est trouvé, la valeur retournée est
false
.
-
- (bool)
singlecolumn
- Mettre à
true
si une seule colonne doit être retournée. - (bool)
singleresult
- Mettre à
true
si un seul résultat doit être retourné. - (bool|null)
useStrict
- Si
false
: en cas d'erreur pas d'exception déclenchée mais une erreur retournée
Sitrue
: en cas d'erreur une exception est déclenchée. Sinull
: traitement d'erreur par défaut (se reporter au paramètre applicatifCORE_SQLSTRICT
).
17.4.2.3 Valeur de retour
string
- Message d'erreur si l'argument
useStrict
estfalse
.
17.4.2.4 Erreurs / Exceptions
- Si
useStrict
estfalse
alors un message d'erreur est retourné. Si le message est vide, cela indique que la requête s'est déroulée correctement. - Si
useStrict
esttrue
une exception\Dcp\Db\Exception
est déclenchée si la requête échoue. - Si
useStrict
estnull
(valeur par défaut), le retour d'erreur dépend du paramètre applicatifCORE_SQLSTRICT
. Par défaut, la valeurCORE_SQLSTRICT
estyes
, ce qui est équivalent àuseStrict
esttrue
.
17.4.2.5 Historique
Aucun.
17.4.2.6 Exemples
17.4.2.6.1 Requête générale
Récupération des identifiants login des 3 premiers comptes trouvés.
$sql = sprintf("SELECT id, login FROM users LIMIT 3"); simpleQuery('', $sql, $results); print_r($results);
Résultat :
Array ( [0] => Array ( [id] => 14 [login] => cash ) [1] => Array ( [id] => 15 [login] => zoo.garde ) [2] => Array ( [id] => 16 [login] => zoo.veto ) )
17.4.2.6.2 Requête un seul résultat et plusieurs colonnes
Récupérer le login et l'adresse de courriel de l'utilisateur n°14.
$idUser=14; $sql = sprintf("SELECT login, mail FROM users WHERE id=%d", $idUser); simpleQuery('', $sql, $results, false, true); print_r($results);
Résultat :
Array ( [login] => cash [mail] => cash@example.net )
17.4.2.6.3 Requête plusieurs résultats et une seule colonne
Récupération des références des groupes d'utilisateurs :
$sql = sprintf("SELECT login FROM users WHERE accounttype='G'"); simpleQuery('', $sql, $results, true, false); print_r($results);
Résultat :
Array ( [0] => all [1] => gadmin [2] => security [3] => care )
17.4.2.6.4 Requête un seul résultat et une seule colonne
Récupérer le login et l'adresse de courriel de l'utilisateur dont le login est zoo.userone.
$userLogin="zoo.userone"; $sql = sprintf("SELECT mail FROM users WHERE login='%s'", pg_escape_string($userLogin)); simpleQuery('', $sql, $result, true, true); printf("mail = [%s]\n",$result);
Résultat :
mail = [one@example.net]
Note : Ne pas oublier d'échapper les chaînes de caractères lors de la composition d'une requête avec des variables de chaîne de caractère.