1
動的名を持つテーブルを削除しようとしています。私は実際にテーブルを動的に生成して操作しますが、これは最も簡単なクエリです。Laravel - PDO - 動的テーブル名
// PURE PDO VERSION
$this->db = new PDO(
'mysql:host=' . $configParams['db_hostname']
. ';port=' . $configParams['db_port']
. ';dbname=' . $configParams['db_name']
. ';charset=utf8mb4',
$configParams['db_username'],
$configParams['db_password']
);
$this->ps_DeleteTempTable = $db->prepare(
"DROP TABLE `:tableName`"
);
しかし、私はそうのように、Laravelを使用して、同じやるとき:
// LARAVEL VERSION
$pdo = DB::connection()->getPdo();
$this->ps_DeleteTempTable = $pdo->prepare(
"DROP TABLE `:tableName`"
);
私は次のエラーが表示されます
私はそうのように、生のPDOを使用する場合すべてが正常に動作します
SQLSTATE [42S02]:ベース表またはビューが見つかりません:1146 'testdb。' 私はSO同様の目的を持つ上の他の質問を見てきましたが、私は一年以上のためにそれを使用しているのに対し、それらはすべて、私は仕事することはできません書いた最初のクエリを示唆して
存在しません。 SQLを構築するとき
おかげで、
実際に機能していれば、プレースホルダは値だけを操作する必要があるため、列や表名ではありません – Qirel
バックティックを使って作業していますが、問題なしで作成/挿入/更新/削除できます。ララヴェルを通過するときに作業が停止するのは単なる奇妙なことです。 – mils
これは実際にはうまくいけば非常に不思議です...準備するときに、単一引用符が自動的に値の周りに追加されるので、 'DROP TABLE \' testdb.'table '\ ''のようなクエリを*得なければなりません。無効。実行しているPHPとMySQLのバージョンバインドの実行方法も表示できますか? – Qirel