> Tech > Eviter les pièges de l’incompatibilité des données

Eviter les pièges de l’incompatibilité des données

Tech - Par Renaud ROSSET - Publié le 06 avril 2011
email


Après avoir établi une connexion avec la base de données et avoir exécuté une instruction SQL de base, le moment est venu de manipuler les bases de données de manière plus complexe. Cela revient à écrire les instructions SQL appropriées. Toutefois, lorsqu'il s'agit de combiner PHP et

Eviter les pièges de l’incompatibilité des données

SQL pour accéder à une base de données DB2 for i, plusieurs points sont à prendre en compte.

Premièrement, PHP est un langage sans typage strict : les variables peuvent changer des types de données selon les données contenues. Avant d'utiliser des données PHP pour mettre à jour votre base de données DB2 for i, vous devez vous assurer du bon format des données. Par exemple, vous devrez contrôler que les champs numériques contiennent des nombres licites et vous devez limiter la longueur des variables chaînes à l'espace disponible pour un champ particulier. Deuxièmement, vous devrez parfois débarrasser les données de certains caractères spéciaux. Ainsi, si un service Web renvoie un message d'erreur incluant des guillemets ou des coupures de paragraphe, vous ne voudrez probablement pas les inclure dans le fichier DB2 for i. Les guillemets en particulier peuvent gêner dans une instruction SQL parce que SQL les interprète comme délimiteurs de données caractères. Une solution simple consiste à remplacer par un blanc tout caractère autre qu’une donnée alphanumérique de base :

$removeSpChars = ereg_replace("[^A-Za-z0-9 ,.]", " ",
$containsSpChars);

Ce code profite de la manière dont PHP traite des relations régulières. Dans le fragment de code précédent, les seuls caractères autorisés sont les lettres a-z (en majuscules et minuscules), les chiffres 0-9, les blancs, la virgule (,) et le point (.) Tout autre caractère doit être remplacé par un blanc. Le caractère de substitution est le second paramètre pour cette fonction, et pour éviter un excès de blancs (au risque d'un possible blanc manquant si un caractère spécial était utilisé comme séparateur), vous pouvez substituer une suite de guillemets vides au caractère blanc utilisé dans cet exemple.

Troisièmement, il vous faudra peut-être harmoniser les différences entre les valeurs par défaut du système i et leurs contreparties PHP. Par exemple, une variable PHP qui n'a pas été initialisée a une valeur nulle, mais la plupart des fichiers DB2 for i n'acceptent pas de valeurs nulles. S'il est possible que les variables ne contiennent pas de données quand vous êtes prêts à mettre à jour la base de données DB2 for i, remplissez les variable PHP que vous utiliserez pour les mises à jour, de blancs ou de zéro selon le type de données. Dans le même esprit, comparer une variable PHP avec des blancs pour déterminer si un champ contient des données, n'est pas aussi simple que comparer avec un caractère blanc seul. Il peut être bon d'initialiser les données DB2 for i à New ou Unused (par exemple pour des codes d’état). Ou bien, si vous voulez être sûrs qu'une variable ne contient que des blancs, construisez une variable de comparaison PHP avec le bon nombre de blancs (par exemple, 30 blancs pour comparer avec le champ nom de client de 30 caractères).

Base de données et au-delà

Outre l'accès aux données DB2 for i à partir de PHP, vous pouvez utiliser la base de données pour communiquer entre RPG et PHP. Par exemple, vous pouvez créer un fichier de contrôle qui détermine si votre application PHP doit traiter des factures provenant de la table Invoice ou de la table Invoice History . etc.. Cette approche est très souple parce qu'elle permet de partager de multiples informations sans échanger des paramètres. Si l'application le prévoit, vous pouvez aussi utiliser le fichier de contrôle pour enregistrer les erreurs détectées par le code PHP.

L'autre moyen d'utiliser SQL dans PHP consiste à appeler des procédures stockées, qui peuvent être des programmes RPG (ou cobol ou CL) ou des programmes de service. Le fait d'enregistrer un programme RPG comme une procédure stockée et de l'invoquer en utilisant PHP, vous permet d'utiliser le code existant tout en bénéficiant pleinement de PHP. PHP enrichit beaucoup votre kit de développement parce qu'il permet d'étendre votre horizon tout en préservant votre investissement en code RPG et en données DB2 for i. Dès lors que les connexions sont faites en utilisant SQL générique, votre code PHP est accessible aux développeurs IBM i et aux développeurs PHP ne connaissant pas bien l’OS IBM i.

Téléchargez cette ressource

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Le livre blanc "The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

Tech - Par Renaud ROSSET - Publié le 06 avril 2011