2013-06-01 1 views
0

Je suis incapable de créer un schéma de base de données MySQL et attribuer des privilèges d'utilisateur via PDO, je ne peux pas trouver quelque chose de mal avec mon code:Impossible de créer un schéma de base de données avec PDO

$db = $this->pdo->prepare('CREATE SCHEMA :dbName; 
          GRANT ALL ON :dbName.* TO :[email protected]`localhost` IDENTIFIED BY :dbPassword'); 
    $db->bindParam(':dbName', $dbName, PDO::PARAM_STR); 
    $db->bindParam(':dbUser', $dbUser, PDO::PARAM_STR); 
    $db->bindParam(':dbPassword', $dbPassword, PDO::PARAM_STR); 
    $db->execute(); 
    var_export($db->errorInfo()); 

retours: « Vous avoir une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de \ '\' test \ '; SUBVENTION ALL ON \ 'essai \'. * TO \ 'test \' à la ligne 1'

+0

@PeeHaa 埽 La requête que j'utilise est valide et testée en console. – user2443876

+0

Si plusieurs requêtes fonctionnent, vous utilisez probablement des instructions préparées émulées. – PeeHaa

Répondre

1
  • Paramètres (tels que :dbName) prennent des entrées scalaires telles que des chaînes et des nombres. Vous ne pouvez pas les utiliser pour les noms de colonnes ou de tables; ceux-ci doivent être entrés explicitement dans la requête. C'est, CREATE SCHEMA 'test' échouera, mais CREATE SCHEMA test est ce que vous avez besoin.
  • PDO ne peut pas exécuter plus d'une requête dans une seule instruction (exprès). Scindez ceci en requêtes séparées.
+0

Merci pour la réponse, je voulais vraiment éviter les requêtes de type exec. PDO accepte réellement plusieurs requêtes dans une seule instruction prepare, testée. – user2443876

Questions connexes