[null, false, "faut-il automatiquement démarrer une transaction pour cette requête?"], "stmt" => [null, true, "faut-il retourner un objet 'statement' pour récupérer le résultat de la requête?"], "num_rows" => [null, false, "faut-il retourner le nombre de ligne affectées?"], "last_insert_id" => [null, false, "faut-il retourner l'id de la dernière ligne ajoutée?"], ]; const EXECUTE_PARAMS_DQL = [ "transaction" => false, "stmt" => true, "num_rows" => false, "last_insert_id" => false, ]; const EXECUTE_PARAMS_DML_UPDATE = [ "transaction" => true, "stmt" => false, "num_rows" => true, "last_insert_id" => false, ]; const EXECUTE_PARAMS_DML_INSERT = [ "transaction" => true, "stmt" => false, "num_rows" => false, "last_insert_id" => true, ]; const EXECUTE_RETURN_VALUE_SCHEMA = [ "num_rows" => [null, null, "le nombre de ligne affectées par la requête"], "insert_id" => [null, null, "id de la dernière ligne ajoutée"], "stmt" => [null, null, "objet 'statement' permettant de récupérer le résultat de la requête"], ]; /** * exécuter une requête générique de bas niveau (aucun traitement du type de * ceux effectués par {@link IRowIncarnation} n'est fait au préalable) * * $params est un tableau conforme à {@link EXECUTE_PARAMS_SCHEMA} et indique * les attendus concernant la requête et son résultat * - "transaction" indique qu'il faut démarrer une transaction si ce n'est * déjà le cas * - "stmt" indique que des lignes seront retournées, et qu'il ne faut pas * fermer l'objet "statement" * - "num_rows" indique qu'on souhaite avoir le nombre de lignes concernées * par l'opération de mise à jour * - "last_insert_id" indique qu'on souhaite avoir l'identifiant de la dernière * ligne ajoutée, si cela est possible * * Retourner un tableau conforme à {@link EXECUTE_RETURN_VALUE_SCHEMA} * - "stmt" est un objet 'statement' permettant de récupérer les lignes * résultat de la requête (la nature de cet objet dépend de l'implémentation) * - "num_rows" est le nom de lignes affectées par la requête * - "insert_id" est l'identifiant de la dernière ligne ajoutée * * @throws QueryException */ function _execute(string $sql, ?array &$bindings=null, ?array $params=null): array; /** * frontend de bas niveau pour {@link _execute()} retournant toutes les lignes * résultat d'une requête de type DQL. * * @throws QueryException */ function _fetchAll(string $sql, ?array &$bindings=null): array; /** * frontend de bas niveau pour {@link _execute()} permettant de récupérer * l'unique résultat (ou au moins le premier résultat) d'une requête de type * DQL. Retourner null si la requête ne retourne pas de résultat * * @throws QueryException */ function _fetchFirst(string $sql, ?array &$bindings=null): ?array; /** * exécuter une requête qui met à jour jour des lignes. retourner le nombre de * lignes affectées. * * une transaction est commencée implicitement. les méthodes {@link commit()} * ou {@link rollback()} doivent être appelées explicitement. * * @throws QueryException */ function _update(string $sql, ?array &$bindings=null): int; /** * retourner une instance par défaut de IQuery appropriée pour cette connexion. * l'instance est configurée par défaut pour une requête de type DQL */ function query(?string $sql=null, ?array $filter=null, ?IRowIncarnation $incarnation=null): IQuery; ############################################################################# /** * méthode de convenance retournant toutes les lignes résultat d'une requête * de type DQL. * * @throws QueryException */ function all(string $sql, ?array $filter=null): array; /** * retourner une liste de valeurs [$value] tel que $value = $row[$name] pour * chaque ligne de résultat de {@link all()} * * NB: si $name===null, prendre le premier champ de $row * * @throws QueryException */ function allVals(?string $name, string $sql, ?array $filter=null): array; /** * méthode de convenance permettant de récupérer l'unique résultat (ou au * moins le premier résultat) d'une requête de type DQL. * * Retourner null si la requête ne retourne pas de résultat * * @throws QueryException */ function first(string $sql, ?array $filter=null): ?array; /** * retourner la valeur $row[$name] où $row est la valeur retournée par * {@link first()}. Retourner $default si {@link first()} ne retourne * pas de résultat * * NB: si $name===null, prendre le premier champ de $row * * @throws QueryException */ function firstVal(?string $name, string $sql, ?array $filter=null, $default=null); /** * méthode de convenance pour exécuter une requête qui met à jour jour des * lignes. retourner le nombre de lignes affectées. * * une transaction est commencée si ce n'est pas déjà le cas. ensuite, la * transaction (celle déjà existante ou la nouvelle) est systématiquement * commitée. * * @throws QueryException */ function update(string $sql, ?array $filter=null): int; }