所以我正在进一步深入学习,并遇到了一个问题:
从我的索引页面更新记录,我能够插入和删除但很难更新它们。
这样就会显示包含更新或删除链接的记录:
<?php
$result = mysqli_query($con,"SELECT * FROM items");
$y = 'id';
while($row = mysqli_fetch_array($result)) {
echo $row['added'] . $row['content'] . $row[$y];
echo "<br>";
echo "Mark as complete";
echo "<br>";
echo "<a href='delete.php?id=" . $row['id'] . "'>Delete Item</a>";
echo "<br>";
echo "<a href='update.php?id=" . $row['id'] . "'>Edit Item</a>";
echo "<br>";
echo "<br>";
}
mysqli_close($con);
?>
当用户点击编辑时,它会传递该项目的ID,这是好的,但我的表格更新记录表现得很奇怪,提交按钮似乎已经消失但是如果我删除了php会出现,这里是更新表格:
<form action="insertupdate.php" method="post">
Content: <input type="text" name="content">
<input type="hidden" name="id" value='<?php $_POST ('id'); ?>'>
<button>dsfsd</button>
</form>
这里是用于更新的脚本,但它似乎没有进行更改:
mysqli_query($con,"UPDATE items SET content='blah blah blah' WHERE id=id");
if (isset($_POST['content'])) {
mysqli_query($con,"UPDATE items SET content='".mysqli_real_escape_string($con, $_POST['content'])."' WHERE id=".($_POST['id']));
}
header('Location: index.php');
mysqli_close($con);
答案 0 :(得分:1)
替换
<input type="hidden" name="id" value='<?php $_POST ('id'); ?>'>
<button>dsfsd</button>
通过
<input type="hidden" name="id" value="<?php echo $_POST['id']; ?>" />
<input type="submit" value="Valid" />
你的脚本没有ID,所以它永远不会工作。
查询:
mysqli_query($con, "UPDATE items SET content = '".mysqli_real_escape_string($con, $_POST['content'])."' WHERE id = ".intval($_POST['id']));
intval()
会将$_POST['id']
转换为数字,因此您将确保不会输入字符串或特殊字符。
答案 1 :(得分:0)
我曾经一直得到这样的错误。幸运的是,MySQL中有一些非常好的错误处理。在带有查询的if中添加此else条件:
if (isset($_POST['content'])) {
mysqli_query($con,"UPDATE items SET content='".mysqli_real_escape_string($con, $_POST['content'])."' WHERE id='".($_POST['id'])."'");
} else {
mysqli_error($con);
}
哦,直接修复你的问题,看起来你需要在查询的id部分引用:
mysqli_query($con,"UPDATE items SET content='".mysqli_real_escape_string($con, $_POST['content'])."' WHERE id='".($_POST['id'])."'");