我在名为edit.php?cat = 1的页面上有一个html表单。表单包含字段cat_name,cat_description和cat_id。我试图用新值更新当前字段,但代码执行在它到达调用函数时死亡(这导致我认为它是SQL查询的错误)。
有谁能看到我在这里做错了什么?
function update_cat($name, $desc, $id){
$db = getDB();
$sql = "UPDATE categories SET cat_name = ".$name.", cat_description = ".$desc." WHERE cat_id = ".$id;
$stmt = $db->prepare($sql);
$stmt->execute();
}
$cat = $_GET['cat'];
$top = $_GET['top'];
if($cat)
{
if(isset($_POST['catSubmit']))
{
$name = $_POST['cat_name'];
$desc = $_POST['cat_description'];
$cat = $_POST['cat_id'];
update_cat($name, $desc, $cat);
}
}
答案 0 :(得分:2)
也许你在$ name或$ desc中有一些特殊字符。您应该使用参数标记和bind_param准备,如下所示:http://php.net/manual/de/mysqli-stmt.prepare.php
答案 1 :(得分:0)
您忘记在SQL查询中添加单引号,$ name和$ desc。
$sql = "
UPDATE categories
SET cat_name = '".$name."',
cat_description = '".$desc."' WHERE cat_id = ".$id;
防止SQL注入:
$name = htmlentities($name);
$desc = htmlentities($desc);