Table Temporaire

Cyrille
Invité n'ayant pas de compte PHPfrance

11 juin 2005, 19:21

Bonjour à toutes et à tous,
tout d'abord, un grand merci à ce forum et à toutes celles et ceux qui y participent. Etant débutant en PHP, j'ai eu l'occasion d'y trouver à de nombreuses reprises mon bonheur et de gagner ainsi de précieuses heures de galères...
Voiçi mon soucis. Pour les besoins de mon site, je dois créer sur une de mes pages une table temporaire. J'utilise globalement le script suivant (trouvé chez Nexen) :
CREATE TEMPORARY TABLE tmpSELECT champ1_index, champ2_index FROM test_table WHERE champ1_index = '1';
INSERT INTO tmpSELECT champ1_index, champ2_index FROM test_table WHERE champ2_index = '1';
SELECT * from tmp;
DROP TABLE tmp;

tout ceci marche plutôt pas mal et j'obtiens en finalité ce que je désirais. J'ai quand même une crainte quant à l'utilisation de cette table temporaire. En effet, que se passera t'il, lorsque mon site sera chez l'hebergeur, si 2 (ou +) utilisateurs tentent de creer cette table temporaire en exécutant ma page? Personnelement, je crains qu'il y ait un conflit, voir une erreur, car une même table portant le même nom et créée en x exemplaires....ca me paraît voué à l'echec !. Mais peut-être que je me trompe (je suis débutant...). Quelqu'un pourrait-il me confirmer / infirmer le risque que je suppose? Y a-t'il alors un moyen d'éviter le conflit?
D'avance merci pour votre aide.
Salutations,
Cyrille

Mammouth du PHP | 19672 Messages

11 juin 2005, 19:40

Ce que tu peux faire pour limiter les risques, c'Est de récupérer un identifiant de session et d'en utiliser une partie pour créer un nom de table temporaire unique en comcaténant par exemple "tmp" et les 7 ou 8 premier caractères d'un ID de session: à moins que tu n'aies quelques milliers d'internautes simultanés (ce que je te souhaite malgré tout), tu as à peu près aucune chance d'avoir deux noms de tables temporaires pareils simultanément.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 juin 2005, 19:52

Il y a aussi un truc que tu peut faire, c'est de créer une table tempX où X est le numéro de la table

A chaque fois que tu crée la table, tu vérifie l'existence de la table, si elle existe, tu incrémente X de 1 et ce tant que tu trouve des tables qui existe et dans ce cas, tu es sûr de ne jamais avoir 2 tables du même nom
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer