0

これが私のコードです:

$page = 'home';
$data = 'blah blah blah';
// my database connection (i know there is no problems here);
require_once('../inc/connection.php');
$id = 1;
$values = array(
    ':page' => $page,
    ':id' => $id,
    ':data' => $data
);
$query = 'UPDATE site SET :page=:data WHERE id=:id';
$sql = $conn->prepare($query);
$sql->execute($values);
// this prints out perfect
echo 'UPDATE site SET '.$page.'='.$data.' WHERE id='.$id;

このページを実行すると、最後にエコーが出力されますが、サイト テーブルを確認すると更新が反映されません。私は自分が何をしているのか分かりません。選択クエリを問題なく作成しているため、接続は良好です。

4

1 に答える 1

2

PDO では、テーブル名と列名をパラメーターで置き換えることはできません

それで

$query = 'UPDATE `site` 
          SET `page`=:data 
          WHERE id=:id';

ifクエリは特定のことを行う必要があります。動的な列が必要な場合は、それらをorステートメントに入れるかswitch、列のバリエーションなどを処理するクラス メソッドでこれを処理するデータベース モデルを構築します。

于 2013-06-04T00:11:14.830 に答える