Page 1 sur 1

Pdo, créer une table avec une requête préparée

Posté : 13 nov. 2010, 18:12
par Castor Gaspard
Bonjour,

Si j'ai lu (et compris) la documentation de Php, il faut privilégier les requêtes préparées pour éviter les injections Sql.

Je sais préparer et afficher une requête, depuis quelque temps.

En revanche, je me demande comment préparer une requête pour créer une table... A part passer directement le nom de la variable dans un execute sous la forme...
$table = 'matable';
$dbh->exec ("CREATE TABLE ".$table." (name CHAR(40), category CHAR(40))");
Or, j'aimerai pouvoir écrire...
$sth = $dbh->exec ("CREATE TABLE ? (name CHAR(40), category CHAR(40))");
$sth->execute($table);
N'est-ce pas possible ou la question de la sécurité est-elle ici moyennement importante, puisque mon l'accès à mon script sera protégé ? :D

Merci pour votre aide.

Bien à vous, :mrgreen:

Gaspard

Re: Pdo, créer une table avec une requête préparée

Posté : 13 nov. 2010, 19:39
par Ryle
Pour être exact, il faut privilégier les requêtes préparées pour des questions de performances et d'optimisation. En effet, l'intérêt de la requête préparer est de pouvoir exécuter plusieurs fois une requête dont seuls les paramètres changent.

Le contrôle qui évite les injections sql n'est qu'un "plus" offert par ce mode de fonctionnement (mode que tu peux tout à fait reproduire en utilisant mysql_real_escape_string(), ou avec quote() si tu utilises pdo).

Donc à moins de devoir créer à la suite un grand nombre de tables identiques (mais je connais plus d'un dba qui hurlerait à cette idée ;)), je ne suis personnellement pas convaincu de l'intérêt d'une requête préparée dans ce cas :)

Re: Pdo, créer une table avec une requête préparée

Posté : 13 nov. 2010, 19:48
par Castor Gaspard
Bonsoir,

Merci, Ryle, pour ton explication. J'y vois plus clair désormais... J'ai toujours tendance à vouloir améliorer la bougie. :mrgreen:

Cordialement,

Gaspard

Re: Pdo, créer une table avec une requête préparée

Posté : 13 nov. 2010, 21:21
par stealth35
mais c'est pas exec mais preparer, apres je suis d'accord avec ryle sur le fait que d'utiliser une requete préparée pour c'est un peu du luxe, mais si c'est tout a fait possible avec CREATE

Re: Pdo, créer une table avec une requête préparée

Posté : 14 nov. 2010, 00:02
par Castor Gaspard
Merci Stealth,

Oui, je me suis emmêlé les pinceaux en recopiant mon code pour le rendre intelligible.

Mais ta réponse m'intéresse. Je vais chercher pour le "fun".

Bien à toi,

Gasaprd