0

MySQL データベース スキーマを作成し、PDO 経由でユーザー権限を割り当てることができません。コードに問題はありません。

    $db = $this->pdo->prepare( 'CREATE SCHEMA :dbName;
                            GRANT ALL ON :dbName.* TO :dbUser@`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());

戻り値: 'SQL 構文にエラーがあります。\'\'test\' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。GRANT ALL ON \'test\'.* TO \'test\' at line 1'

4

1 に答える 1

1
  • パラメーター ( など:dbName) は、文字列や数値などのスカラー入力を受け取ります。列名やテーブル名には使用できません。これらはクエリに明示的に入力する必要があります。つまり、CREATE SCHEMA 'test'失敗しますが、CREATE SCHEMA test必要なものです。
  • PDO は、(意図的に) 1 つのステートメントで複数のクエリを実行できません。これを個別のクエリに分割します。
于 2013-06-01T19:21:03.523 に答える