2012-03-01 18 views
0

私の更新機能がデータベースを更新しない理由を理解しようとしていました。ここPHPまたはMySQLデータベースの更新はありません

関数である:

public function update() { 

    if (is_null($this->id)) triger_error ("DailyMenuItem::update(): Attempt to update a DailyMenuItem object that does not have its ID property set.", E_USER_ERROR); 

    $conn = new PDO (DB_DSN, DB_USERNAME, DB_PASSWORD); 
    $sql = "UPDATE daily_menu SET date=FROM_UNIXTIME(:date), name=:name, description=:description, price=:price WHERE id = :id"; 
    $st = $conn->prepare ($sql); 
    $st->bindValue(":name", $this->name, PDO::PARAM_STR); 
    $st->bindValue(":description", $this->description, PDO::PARAM_STR); 
    $st->bindValue(":price", $this->price, PDO::PARAM_INT); 
    $st->bindValue(":date", $this->date, PDO::PARAM_INT); 
    $st->execute(); 
    $conn = null; 
} 

このオブジェクトは、この

DailyMenuItemオブジェクト ( [ID] => 4 [名] =>スモークチキンバゲット [説明]を含んでいます=>ヤギチーズと一緒に [価格] => 13 [日付] => 1330585200 )

エラーメッセージは表示されません。それは何も更新しません。助けてください:)

+0

IDをバインドしましたか? –

+3

bindValueメソッドを見ると、WHERE句の値は表示されません。これは更新するレコードです(WHERE id =:id) – user466764

+0

$ result = $ st-> execute();更新の結果を取得する –

答えて

3

あなたは拘束力のあるIDのようではありません。

問題があるかもしれません。

0

すべての更新および削除クエリには、クエリを実行するプライマリキー値が必要です。ここではあなたの例では、クエリのIDを述べているが、下にバインドされていないので、idクエリは更新する行を知らない。

関連する問題