【问题标题】:MYSQLi query error in a form表单中的MYSQLi查询错误
【发布时间】:2015-05-17 17:53:12
【问题描述】:

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

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

注意:未定义变量:C:\xampp\htdocs\CMS_project\admin\categories.php 第 90 行中的 cat_id 查询失败!您的 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>";

}
?>

【问题讨论】:

  • 您是否尝试将列名放在反引号` `之间,因为您可以防止由mysql保留字引起的错误
  • 在第二个if你实际上没有定义$cat_id ...

标签: php mysql


【解决方案1】:

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

$cat_id = $_POST['cat_id'];

就在第 90 行之前。

顺便记得使用 mysqli_real_escape_string 来防止 SQL 注入问题。

【讨论】:

  • 我编辑了 OP 并添加了表单获取 ID 的位置。
【解决方案2】:

我想通了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多