PDO更新声明无效

时间:2014-10-14 15:31:00

标签: php mysql pdo

我正在尝试更新一个简单的查询,并且我不断收到以下错误消息...

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在'之后使用正确的语法:cat_name,menu_category_description =:cat_desc WHERE id =:id'在第1行

我使用的查询看起来完全有效。我不知道为什么它会一直显示错误信息。

以下是我正在使用的查询。

$query = "UPDATE menu_categories SET menu_category_name = :cat_name, menu_category_description = :cat_desc WHERE id = :id ";

$stmt = $db->query($query);
$stmt->execute([":cat_name" =>$category_name, ":cat_desc" => $category_description, ":id" => $id ]);

2 个答案:

答案 0 :(得分:1)

您需要先准备好您的查询:(您要查询而不是准备)

更改此行:

$stmt = $db->query($query);

为:

$stmt = $db->prepare($query);

然后改变这一行

$stmt->execute([":cat_name" =>$category_name, ":cat_desc" => $category_description, ":id" => $id ]);

到(并删除方括号)

$stmt->execute(":cat_name" =>$category_name, ":cat_desc" => $category_description, ":id" => $id);

答案 1 :(得分:0)

看看这是否适合您,

$query = "UPDATE menu_categories SET menu_category_name = :cat_name, menu_category_description = :cat_desc WHERE id = :id ";

$stmt = $db->prepare($query);
$stmt->bindParam(':cat_name', $category_name);
$stmt->bindParam(':cat_desc ', $category_description);
$stmt->bindParam(':id', $id);
$stmt->execute();

另外,您在哪里定义$ category_name,$ category_description,$ id的值?确保它们不是空的。

以下是更新PDO

的示例
$pdo = Database::getInstance();
$stmt = $pdo->db->prepare("UPDATE people SET reset='1', active=:acTive WHERE user_id=:id limit 1");           
$stmt->bindParam(':acTive', $_POST['active_key']);
$stmt->bindParam(':id', $_POST['id']);
$stmt->execute();

希望有所帮助