通过创作,阅读,更新和工作方式努力从我已完成C,R& C的数据库中删除(CRUD)信息。 D但由于某种原因我无法更新。 我想做什么: 编辑分类标题 我的结果: 当我想要更改猫标题表中的编辑时,我可以让猫标题回显到一个表单,在那里可以更改然后当我尝试更改猫标题时,单击更新表单就像我想要的那样消失但猫的头衔保持不变。 我也没有收到任何查询错误 调试没有错误的代码时我应该注意什么? 有人能看到我的问题吗?
if (isset($_GET['edit'])) {
$cat_id = $_GET['edit'];
include "includes/update.php";
}
?>
<form action="categories.php" method="post">
<div class="form-group">
<label for="cat_title">Edit 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;} ?>" class="form-control" type="text" name="cat_title">
<?php
}
}
if(isset($_POST['edit_category'])){
$edit_cat_title = $_POST['cat_title'];
$query = "UPDATE FROM categories SET cat_title = '{$edit_cat_title}' WHERE cat_id = {$cat_id} ";
$edit_query = mysqli_query($connection,$query);
if (!$edit_query) {
die(mysqli_error($edit_query));
}
}
?>
</div>
<input class="btn btn-primary" type="submit" name="edit_category" value="Edit Category">
</form>
答案 0 :(得分:1)
在以下行中,您遇到一个小错误:
$query = "UPDATE FROM categories SET cat_title = '{$edit_cat_title}' WHERE cat_id = {$cat_id} ";
您需要删除&#34; FROM&#34;在那里,看起来像这样:
$query = "UPDATE categories SET cat_title = '{$edit_cat_title}' WHERE cat_id = {$cat_id} ";
它应该按预期工作。
答案 1 :(得分:0)
您正在使用
调用更新查询$query = "UPDATE FROM categories SET cat_title = '{$edit_cat_title}' WHERE cat_id = {$cat_id} ";
其中$ cat_id可能未设置, 一旦获得此值,您将使用if条件
if (isset($_GET['edit'])) {
$cat_id = $_GET['edit'];
$ _GET [&#39;编辑&#39; ]可以为空,下一个错误是在循环中覆盖$ cat_id变量:$ cat_id = $ row [&#39; cat_id&#39;];
答案 2 :(得分:0)
if (isset($_GET['edit'])) {
$cat_id = $_GET['edit'];
include "includes/update.php";
}
?>
<form action="categories.php" method="post">
<div class="form-group">
<label for="cat_title">Edit Category</label>
<?php
if (isset($_GET['edit'])) {
$cat_id = $_GET['edit'];
}
if(isset($_POST['edit_category'])){
$edit_cat_title = $_POST['cat_title'];
$query = "UPDATE FROM categories SET cat_title = '{$edit_cat_title}' WHERE cat_id = {$cat_id} ";
$edit_query = mysqli_query($connection,$query);
if (!$edit_query) {
die(mysqli_error($edit_query));
}
}
FROM
,它应为UPDATE categories SET ...
$edit_cat_title
来自POST值,但$cat_id
来自GET值,但您的表单(据我所见)的action
值为action = "categories.php"
{1}}将包含 NO GET VARIABLES 。将属性enctype
添加到<form>
,例如:
<form ... enctype='multipart/form-data' ... >
说实话,最后一点是很好的做法,但如果这就是你的POST数据没有被填充的原因我会感到惊讶。
可能的解决方案:
1)使用$_REQUEST['cat_id']
并在表单中插入cat_id作为POSTed字段,因此它可以使用$_POST
或$_GET
[或{{1}给出的变量}}]
2)将您的操作更改为goto:$_COOKIE
,以便根据需要将表单提交给具有有效GET值的地址。
3)使用会话保存以前页面中的数据(例如action ="categories.php?edit=XXX"
)。这是我的首选方案。
从问题评论中可以清楚地看到,cat_id
部分永远不会是if isset($_POST['edit_category'])
,因此这意味着您的表单不正确 - 要么您没有名为true
的表单字段,要么您的表单字段永远不会填写,或者从不与表单一起发送(也许输入位于name='edit_cateogry'
表单结束标记之后?
无论如何,您的问题是您正在寻找的$ _POST值永远不会被设置。