Bonjour
Pour terminer ce module de paiement Paypal pour mon site partenaire, je me suis mis en tête de programmer une couche d'abstraction MySQL.
J'utilise déjà PDO, et j'envisage une classe singleton ( Database ) pour les connexions, plus quelques fonctions ( = méthodes ) de classe :
Connexion : $conn = Database::getConnect();
Eventuellement des paramètres qui vont bien, ou des constantes.
Pour les résultats à une seule ligne ( select, insert, update, delete ) :
$array_result = $conn->num_fetch_row($sql) ( select : indices de champs par numéros ),
ou
$array_result = $conn->assoc_fetch row($sql); ( select : indices par noms de colonnes ).
( pour les autres que select, rendrait le code de retour ).
Pour les résultats à plusieurs lignes ( select uniquement ) :
Idem ( rows au lieu de row ) avec num_fetch_rows($sql) et assoc_fetch_rows($sql).
Dans le premier cas, un query ou un exec ( suivant type de requête ), suivi éventuellement ( select ), d'un fetch et cursorClose().
Dans le deuxième cas : prepare() => bindParam() => execute().
Le problème, serait de fixer le paramètre de prepare(), et ceux de bindParam().
Il faudrait donc, à partir de la requête MySQL, produire une chaîne traduisant les valeurs de critères après le(s) WHERE ( non suivis par SELECT ), en leur équivalents noms de colonnes préfixés par deux-points ( : ), et puis une array rendant les paramètres des bindParam().
Je comptais parser la requête MySQL, ( avec la librairie PHP-SQL-Parser-master de Github ) vers un arbre ( tree ), et pour chaque feuilles de type [expr_type]=const, remplacer [base_expr] par le [base_expr] de [expr_type] précédent ( = nom de la colonne comparée ).
J'ai mis dans un fichier texte, toutes les requêtes MySQL de mon site, je vais les classer par types ( complexité, syntaxe ) puis évaluer l'algorithme que je vais utiliser.
Merci de me dire de quelle manière vous avez résolu ce problème de couche d'abstraction SQL.
Respectueusement.
Pour terminer ce module de paiement Paypal pour mon site partenaire, je me suis mis en tête de programmer une couche d'abstraction MySQL.
J'utilise déjà PDO, et j'envisage une classe singleton ( Database ) pour les connexions, plus quelques fonctions ( = méthodes ) de classe :
Connexion : $conn = Database::getConnect();
Eventuellement des paramètres qui vont bien, ou des constantes.
Pour les résultats à une seule ligne ( select, insert, update, delete ) :
$array_result = $conn->num_fetch_row($sql) ( select : indices de champs par numéros ),
ou
$array_result = $conn->assoc_fetch row($sql); ( select : indices par noms de colonnes ).
( pour les autres que select, rendrait le code de retour ).
Pour les résultats à plusieurs lignes ( select uniquement ) :
Idem ( rows au lieu de row ) avec num_fetch_rows($sql) et assoc_fetch_rows($sql).
Dans le premier cas, un query ou un exec ( suivant type de requête ), suivi éventuellement ( select ), d'un fetch et cursorClose().
Dans le deuxième cas : prepare() => bindParam() => execute().
Le problème, serait de fixer le paramètre de prepare(), et ceux de bindParam().
Il faudrait donc, à partir de la requête MySQL, produire une chaîne traduisant les valeurs de critères après le(s) WHERE ( non suivis par SELECT ), en leur équivalents noms de colonnes préfixés par deux-points ( : ), et puis une array rendant les paramètres des bindParam().
Je comptais parser la requête MySQL, ( avec la librairie PHP-SQL-Parser-master de Github ) vers un arbre ( tree ), et pour chaque feuilles de type [expr_type]=const, remplacer [base_expr] par le [base_expr] de [expr_type] précédent ( = nom de la colonne comparée ).
J'ai mis dans un fichier texte, toutes les requêtes MySQL de mon site, je vais les classer par types ( complexité, syntaxe ) puis évaluer l'algorithme que je vais utiliser.
Merci de me dire de quelle manière vous avez résolu ce problème de couche d'abstraction SQL.
Respectueusement.