読者です 読者をやめる 読者になる 読者になる

やったこと

webサービスを作るときに考えたことを垂れ流します

プリペアドステートメントでテーブル名指定できないのか

PHPでSQLite3をいじってるんだけど、PDOのPrepared Statementの構文を使ってテーブル名を指定しようと思ったらできなかった。

以下みたいにするとエラー吐く。

$sql = "create table :table_name (id integer, name text)";
$stmt = $db->prepare($sql);
$stmt->bindValue(':table_name', $table_name, PDO::PARAM_STR);
$stmt->execute();

ググって調べてみたところ、Prepared Statementはカラムの値に使うもので、テーブル名には使えないみたいだね。

しかたないので以下みたいにするとOKだった。

$sql = "create table ".$table_name." (id integer, name text)";
$stmt = $db->prepare($sql);
$stmt->execute();