我正在尝试根据用户是否要在列表中标记项目来更新我的MYSQL表。如果选中了项目A,则取消选中它。如果未选中项目A,请选中它。当我使用我的脚本时,没有任何事情发生,我不知道为什么或什么甚至出错。没有错误被抛出。这是在用户按下检查按钮时运行的。它将它发送到变量id和c。
$ _ 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");
?>
答案 0 :(得分:2)
我认为您将错误的参数传递给execute
。试试这个:
$statement -> execute(array(
':id' =>$id,
));
答案 1 :(得分:1)
您在预准备语句中绑定:id
,但在执行它时,您将传递数组键todo_id
。相应地改变它:
$statement -> execute(array(
':id' =>$id,
));