2012-02-27 12 views
2

ユーザがリストから項目をマークするかどうかに基づいてMYSQLテーブルを更新しようとしています。アイテムAがチェックされている場合はチェックを外します。項目Aがチェックされていない場合は、チェックします。私の下で私のスクリプトを使用すると何も起こりませんし、私はなぜ、または何がうまくいかないかもわかりません。エラーはスローされません。これは、ユーザーがチェックボタンを押すと実行されます。これを変数idとcに送る。PHPでMYSQLテーブルを更新する

$ _GET [ 'C']は常に1または0である必要があり、Idは(uniqidです)

<?php 

require_once('db.php'); 

if(!isset($_GET['id'])){ 
    echo "You didn't supply a item (id)"; 
    header('HTTP/1.1 417 Expectation Failed'); 
    exit(); 
} 

if(!isset($_GET['c'])){ 
    echo "You didn't supply a item (c)"; 
    header('HTTP/1.1 417 Expectation Failed'); 
    exit(); 
} 

if ($_GET['c'] == 0) 
{ 
$query = "UPDATE todo_item 
      SET checked = 1 
      WHERE todo_id = :id"; 
} 
else 
{ 
$query = "UPDATE todo_item 
      SET checked = 0 
      WHERE todo_id = :id"; 
} 

$id = $_GET['id']; 

$statement = $db->prepare($query); 
$statement -> execute(array(
    'todo_id' =>$id, 
)); 

header("Location: index.php"); 

?> 
+2

'' id '=> $ id'に ''todo_id' => $ id'を変更してください。 – Travesty3

+0

$ statement = $ db-> prepare($ query)の後のecho $ statement;あなたが何を得ているかを教えてください。この部分について、私は混乱しています。$ statement - > execute(array( 'todo_id' => $ id、 )); –

答えて

2

私はあなたがexecuteに誤ったパラメータを渡していると思います。これを試してみてください:

$statement -> execute(array(
    ':id' =>$id, 
)); 
+0

あなたは正しいです。いつもあなたがそれを何度も見てきたので、あなたの目で見ることができないその愚かな小さなもの。ありがとう! –

1

あなたが準備された文で:idを結合しているが、あなたはそれを実行するとき、あなたは配列のキーtodo_idを渡しています。それに応じて変更してください:

$statement -> execute(array(
    ':id' =>$id, 
)); 
関連する問題