更新SQL不能使用我的PHP表单

时间:2017-09-17 09:37:23

标签: php sql oop sql-update

我在名为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);
 }
}

2 个答案:

答案 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);