将Row插入表时,数据库查询失败错误

时间:2017-11-13 19:04:39

标签: php mysql

尝试在表中插入新行时出现Database query failed错误。此表(pages)有一列(subject_id)引用另一个表(subjects)。我从url传递subject_id的值,并在表单上正确传递。所有的值似乎都使用php在表单上正确传递,但是当我尝试插入行时我收到错误。表格提交给自己。

select_all_pages_by_subject($sid)是一个从当前主题中选择所有行(pages)的函数(从url传递)。它适用于位置字段。

我怀疑这个错误可能是我的代码中某处的MySQL语法错误,但我似乎无法弄清楚它。我很感激一些帮助。谢谢。

这是我的代码:

<div class="body_content">
<?php
    $sid = null;
if(isset($_GET["subject"])) {
    $sid = $_GET["subject"];
}
?>
<form action="create_page.php" method="post">
Menu Name:  <input type="text" name="menu" /> <br>
Position:   <select name="position">
                <?php 
                $new_page_query = select_all_pages_by_subject($sid);
                $page_count = mysqli_num_rows($new_page_query);
                for($count=1; $count<=($page_count + 1); $count++) {
                            echo "<option value=\"$count\">$count</option>";
                }
                ?>
            </select> <br>
Visible:<br>    
No <input type="radio" name="visible" value="0" />
Yes <input type="radio" name="visible" value="1" /> <br>
Subject ID: <input type="text" name="subject_id" value="<?php echo $sid; ?>" /> <br>
Content: <br> 
<textarea rows="5" cols="40" name="content"></textarea> <br>
<input type="submit" value="Create Page" name="submit" /> <br>
<a href="admin.php">Cancel</a> <br>
</form>
<?php
        if(isset($_POST['submit'])) {
        $menu_name = $_POST["menu"];
        $position = (int) $_POST["position"];
        $visible = (int) $_POST["visible"];
        $content = $_POST["content"];
        $subject_id = (int) $_POST["$sid"];
        $insert_query = "INSERT INTO pages (subject_id, menu_name, position,
                          visible, content) VALUES ({$subject_id},'{$menu_name}', {$position},
                          {$visible}, '{content}')";
        $page_insert = mysqli_query($connection, $insert_query);
        if($page_insert) {
            $_SESSION["message"] = "Page created successfully";
            redirect_to("admin.php");
        } else {
        $_SESSION["message"] = "Page creation failed";
        redirect_to("create_page.php?subject=$sid");
    }
}
?>
</div>

编辑:删除了WHERE语句

2 个答案:

答案 0 :(得分:1)

问题是INSERT之后不能有WHERE

$insert_query = "INSERT INTO pages (subject_id, menu_name, position, visible, content) VALUES ({$subject_id},'{$menu_name}', {$position}, {$visible}, '{content}')";

答案 1 :(得分:-1)

因此经过一些故障排除后,我决定将表单和表单处理分成2个不同的页面,然后我意识到问题,在表单操作中,我没有在URL中指定主题ID,因为我传递了id来自网址:

<form action="create_page.php" method="post">

  

应该是:

<form action="create_page.php?subject=<?php echo $sid; ?>" method="post">

编辑:我还注意到&#34;数据库查询失败&#34;在位置表单字段上调用错误,我正在&#34;页面&#34;上建立数据库连接。表拉行数。因此当插入语句由于缺少来自url的主题id而失败时,php没有处理通过位置表单字段的页面,它在字段上调用错误并停止执行。当插入查询失败时,表单的一部分将显示在屏幕上(仅显示菜单名称字段和具有空值的位置字段)。当我试图查看错误的源代码时,它要求再次重新加载页面(感觉像无限循环运行或其他东西)