尝试在表中插入新行时出现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语句
答案 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没有处理通过位置表单字段的页面,它在字段上调用错误并停止执行。当插入查询失败时,表单的一部分将显示在屏幕上(仅显示菜单名称字段和具有空值的位置字段)。当我试图查看错误的源代码时,它要求再次重新加载页面(感觉像无限循环运行或其他东西)