0

変数テーブルに値を挿入する準備済みのSQLリクエストを実行しようとしています

このコードは私よりも明示的になります:

$req = $db->prepare("INSERT INTO ? 
                    (    `id`, 
                         `parent_id`, 
                         `position`, 
                         `left`, 
                         `right`, 
                         `level`, 
                         `title`, 
                         `type`, 
                         `content`   ) 
                    VALUES (NULL, 
                         '2', 
                         'last', 
                         '3', 
                         '10', 
                         '2', 
                         ?, 
                         'default', ?);");

$req->execute(array($_SESSION["user_id"], $result["title"], $result["content"]));

すべての変数が設定されています。エコーで確認しました。変数を「INSERT INTO」することはできませんか?

(各ユーザーには、一意のIDで名前が付けられた独自のテーブルがあります。そのため、クエリにテーブル名を直接書き込むことはできません)

4

2 に答える 2

2

テーブル名に名前付きパラメーターを使用することはできません。その場合は、名前を SQL に直接含める必要があります。

INSERT INTO $tablename (....

ただし、これはまだ SQL インジェクション攻撃に対して無防備です。

そのようなデータを保存したい場合は、すべてを 1 つのテーブルに入れ、追加のキーとして追加のフィールドを追加するだけです。

于 2012-08-17T14:18:10.890 に答える
0

いいえ、これはできません。以下のようにする必要があります。

$table = $_SESSION["user_id"];
$req = $db->prepare("INSERT INTO $table (`id`, `parent_id`, `position`, `left`, `right`, `level`, `title`, `type`, `content`) VALUES (NULL, '2', 'last', '3', '10', '2', ?, 'default', ?);");
$req->execute(array($result["title"], $result["content"]));
于 2012-08-17T14:17:55.850 に答える