En toute généralité (le problème n'étant ni spécifique à PHP ni à
MySQL), les requêtes préparées (avec placeholders) n'ont que des
avantages:
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
En toute généralité (le problème n'étant ni spécifique à PHP ni à
MySQL), les requêtes préparées (avec placeholders) n'ont que des
avantages:
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
En toute généralité (le problème n'étant ni spécifique à PHP ni à
MySQL), les requêtes préparées (avec placeholders) n'ont que des
avantages:
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
En toute généralité (le problème n'étant ni spécifique à PHP ni à
MySQL), les requêtes préparées (avec placeholders) n'ont que des
avantages:
Qu'est-ce qu'un placeholder ?
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
Sur le papier, c'est bien beau, en pratique, souvent ça empire
encore les choses.
En toute généralité (le problème n'étant ni spécifique à PHP ni à
MySQL), les requêtes préparées (avec placeholders) n'ont que des
avantages:
Qu'est-ce qu'un placeholder ?
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
Sur le papier, c'est bien beau, en pratique, souvent ça empire
encore les choses.
En toute généralité (le problème n'étant ni spécifique à PHP ni à
MySQL), les requêtes préparées (avec placeholders) n'ont que des
avantages:
Qu'est-ce qu'un placeholder ?
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
Sur le papier, c'est bien beau, en pratique, souvent ça empire
encore les choses.
Qu'est-ce qu'un placeholder ?
Je ne sais pas, fainéantise de chercher, quelle est la bonne traduction
française.
Cela revient à envoyer la requête SQL en deux bouts au SGBDR
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
A quel niveau ? Code ? Performances ?
Il faudrait bien sûr coupler avec une factorisation des accès au SGBDR
dans son propre code
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
C'est justement le but d'une telle bibliothèque que de s'affranchir des
détails de chaque SGBDR
Sur le papier, c'est bien beau, en pratique, souvent ça empire
encore les choses.
C'est tout sauf mon expérience.
J'ai même passé 3 ans, en pure perte, à devoir essayer de re-écrire un
code de 10000 lignes sans bibliothèques d'abstraction ni factorisation
pour passer de MySQL à PostgreSQL. Tout re-écrire de zéro fut plus
simple. Difficile de ne pas voir ca comme un gachis qui plaide pour les
bibliothèques d'abstraction.
Qu'est-ce qu'un placeholder ?
Je ne sais pas, fainéantise de chercher, quelle est la bonne traduction
française.
Cela revient à envoyer la requête SQL en deux bouts au SGBDR
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
A quel niveau ? Code ? Performances ?
Il faudrait bien sûr coupler avec une factorisation des accès au SGBDR
dans son propre code
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
C'est justement le but d'une telle bibliothèque que de s'affranchir des
détails de chaque SGBDR
Sur le papier, c'est bien beau, en pratique, souvent ça empire
encore les choses.
C'est tout sauf mon expérience.
J'ai même passé 3 ans, en pure perte, à devoir essayer de re-écrire un
code de 10000 lignes sans bibliothèques d'abstraction ni factorisation
pour passer de MySQL à PostgreSQL. Tout re-écrire de zéro fut plus
simple. Difficile de ne pas voir ca comme un gachis qui plaide pour les
bibliothèques d'abstraction.
Qu'est-ce qu'un placeholder ?
Je ne sais pas, fainéantise de chercher, quelle est la bonne traduction
française.
Cela revient à envoyer la requête SQL en deux bouts au SGBDR
Quant aux fonctions, mon autre conseil, mais orthogonal avec les
problèmes d'injection SQL, c'est de ne *pas* utiliser les fonctions
natives, mais de passer par une bibliothèque d'abstraction
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
A quel niveau ? Code ? Performances ?
Il faudrait bien sûr coupler avec une factorisation des accès au SGBDR
dans son propre code
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
C'est justement le but d'une telle bibliothèque que de s'affranchir des
détails de chaque SGBDR
Sur le papier, c'est bien beau, en pratique, souvent ça empire
encore les choses.
C'est tout sauf mon expérience.
J'ai même passé 3 ans, en pure perte, à devoir essayer de re-écrire un
code de 10000 lignes sans bibliothèques d'abstraction ni factorisation
pour passer de MySQL à PostgreSQL. Tout re-écrire de zéro fut plus
simple. Difficile de ne pas voir ca comme un gachis qui plaide pour les
bibliothèques d'abstraction.
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
A quel niveau ? Code ? Performances ?
Code !
Pour ajouter un enregistrement, créer 2, 3, voir 4 objets. Les maintenir
entres les différents blocs (portées des variables). Jongler entre les
méthodes : .Add, . Refresh, ...
Pour les performances, avec les machines d'aujourd'hui et considérant
la nature des applications Web, ce n'est pas ce qui me venait à
l'esprit.
Il faudrait bien sûr coupler avec une factorisation des accès au
SGBDR dans son propre code
Un pooling de connections sur le SGBD ?
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
C'est justement le but d'une telle bibliothèque que de s'affranchir des
détails de chaque SGBDR
Oui.
Mais on se retrouve, à chaque fois, à vérifier ce que tel ou tel
provider permet d'utiliser comme objets, propriétés et méthodes. Pour se
rendre compte que le provider machin chose version trucmuche ne gère pas
ce que l'on a utilisé partout, et devoir modifier son application, et...
(...)
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
A quel niveau ? Code ? Performances ?
Code !
Pour ajouter un enregistrement, créer 2, 3, voir 4 objets. Les maintenir
entres les différents blocs (portées des variables). Jongler entre les
méthodes : .Add, . Refresh, ...
Pour les performances, avec les machines d'aujourd'hui et considérant
la nature des applications Web, ce n'est pas ce qui me venait à
l'esprit.
Il faudrait bien sûr coupler avec une factorisation des accès au
SGBDR dans son propre code
Un pooling de connections sur le SGBD ?
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
C'est justement le but d'une telle bibliothèque que de s'affranchir des
détails de chaque SGBDR
Oui.
Mais on se retrouve, à chaque fois, à vérifier ce que tel ou tel
provider permet d'utiliser comme objets, propriétés et méthodes. Pour se
rendre compte que le provider machin chose version trucmuche ne gère pas
ce que l'on a utilisé partout, et devoir modifier son application, et...
(...)
Je ne suis pas sûr que celà soit toujours un excellent conseil : cela
alourdit considérablement les applications,
A quel niveau ? Code ? Performances ?
Code !
Pour ajouter un enregistrement, créer 2, 3, voir 4 objets. Les maintenir
entres les différents blocs (portées des variables). Jongler entre les
méthodes : .Add, . Refresh, ...
Pour les performances, avec les machines d'aujourd'hui et considérant
la nature des applications Web, ce n'est pas ce qui me venait à
l'esprit.
Il faudrait bien sûr coupler avec une factorisation des accès au
SGBDR dans son propre code
Un pooling de connections sur le SGBD ?
rend dépendant à une
implémentation dont les méthodes ne seront pas applicables à tous les
SGBD...
C'est justement le but d'une telle bibliothèque que de s'affranchir des
détails de chaque SGBDR
Oui.
Mais on se retrouve, à chaque fois, à vérifier ce que tel ou tel
provider permet d'utiliser comme objets, propriétés et méthodes. Pour se
rendre compte que le provider machin chose version trucmuche ne gère pas
ce que l'on a utilisé partout, et devoir modifier son application, et...
(...)
On ne doit pas parler de la même chose/se comprendre.
Avec une bibliothéque d'interconnexion comme PearDB (mais ca serait
identique avec une autre)
DB::connect
query
fetchRow
disconnect
On ne doit pas parler de la même chose/se comprendre.
Avec une bibliothéque d'interconnexion comme PearDB (mais ca serait
identique avec une autre)
DB::connect
query
fetchRow
disconnect
On ne doit pas parler de la même chose/se comprendre.
Avec une bibliothéque d'interconnexion comme PearDB (mais ca serait
identique avec une autre)
DB::connect
query
fetchRow
disconnect
Je pensais à une bibliothèque qui per met de s'affranchir totalement du
SQL - c'est le cas avec ADO
En lisant ce nouveau message, j'ai l'impression que tu parle plus d'un
moyen standard d'ouvrir une source ODBC ou équivalente ? Ensuite, on
continue à faire exécuter son SQL ?
Je pensais à une bibliothèque qui per met de s'affranchir totalement du
SQL - c'est le cas avec ADO
En lisant ce nouveau message, j'ai l'impression que tu parle plus d'un
moyen standard d'ouvrir une source ODBC ou équivalente ? Ensuite, on
continue à faire exécuter son SQL ?
Je pensais à une bibliothèque qui per met de s'affranchir totalement du
SQL - c'est le cas avec ADO
En lisant ce nouveau message, j'ai l'impression que tu parle plus d'un
moyen standard d'ouvrir une source ODBC ou équivalente ? Ensuite, on
continue à faire exécuter son SQL ?
Bref, ODBC, ou JDBC en Java, ou DBI en Perl, ou une des multiples
solutions en PHP (AdoDB,Pear, MDB, etc...), langage avec lequel on
voit trop souvent l'usage des fonctions natives de chaque SGBDR, c'était
le sens de mon message initial, mais je suis tombé un peu à côté de la
plaque, désolé.
Bref, ODBC, ou JDBC en Java, ou DBI en Perl, ou une des multiples
solutions en PHP (AdoDB,Pear, MDB, etc...), langage avec lequel on
voit trop souvent l'usage des fonctions natives de chaque SGBDR, c'était
le sens de mon message initial, mais je suis tombé un peu à côté de la
plaque, désolé.
Bref, ODBC, ou JDBC en Java, ou DBI en Perl, ou une des multiples
solutions en PHP (AdoDB,Pear, MDB, etc...), langage avec lequel on
voit trop souvent l'usage des fonctions natives de chaque SGBDR, c'était
le sens de mon message initial, mais je suis tombé un peu à côté de la
plaque, désolé.