表单

时间:2015-05-17 09:13:30

标签: php mysql

我似乎无法找到错误。此表单应该更新数据库中的类别。

当我尝试更新类别时,它会给我这个错误

  

注意:未定义的变量:第90行的C:\ xampp \ htdocs \ CMS_project \ admin \ categories.php中的cat_id   QUERY FAILED!您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。在第1行

这是下面的代码,我已经评论了第90行。

                   <form action="categories.php" method="post">
                                <div class="form-group">
                                   <label for="cat_title">Update Category</label>

                                       <?php
                                            if(isset($_GET['edit']))
                                               {
                                                $cat_id = $_GET['edit'];
                                                $query = "SELECT * FROM categories WHERE cat_id = {$cat_id} ";
                                                $select_categories_id = mysqli_query($connection, $query);

                                                while($row = mysqli_fetch_assoc($select_categories_id))
                                                {
                                                 $cat_id = $row['cat_id'];
                                                 $cat_title = $row['cat_title'];
                                        ?>
                                    <input value="<?php if(isset($cat_title)){echo $cat_title;} ?>" type="text" name="cat_title" class="form-control">  


                                        <?php } } ?>

                                        <?php
                                        if(isset($_POST['update_category']))
                                        {
                                         $the_cat_title = $_POST['cat_title'];

                                            //Below is line 90

                                            $query = "UPDATE categories SET cat_title = '{$the_cat_title}' WHERE cat_id = {$cat_id} ";
                                            $update_query = mysqli_query($connection, $query);
                                                if(!$update_query)
                                                {
                                                 die("QUERY FAILED!" . mysqli_error($connection));   
                                                }
                                        }
                                        ?> 

                                </div>
                                <div class="form-group">
                                    <input type="submit" name="update_category" value="Update Category" class="btn btn-primary">
                                </div>

                            </form>                  

这是表单获取ID

的地方
    <?php
while($row = mysqli_fetch_assoc($select_categories))
{
 $cat_id = $row['cat_id'];
 $cat_title = $row['cat_title'];
 echo "<tr>
       <td>{$cat_id}</td>
       <td>{$cat_title}</td>
       <td><a href='categories.php?delete={$cat_id}'>Delete</a></td>
       <td><a href='categories.php?edit={$cat_id}'>Edit</a></td>
      </tr>";

}
?>

2 个答案:

答案 0 :(得分:0)

$ cat_id变量根本没有在查询范围内定义。这意味着,$ cat_id变量仅在if语句中声明,您可以在其中检查是否设置了$ _GET ['edit']。 要修复它,请在表单中添加一个带有类别ID的隐藏字段,然后在PHP中添加:

$cat_id = $_POST['cat_id'];

就在第90行之前。

请记住使用mysqli_real_escape_string来防止SQL注入问题。

答案 1 :(得分:0)

我明白了。

我必须从表单中的操作中删除categories.php,如果我将其留空,则可以正常工作。 :)