用php编辑mysql中的记录

时间:2014-07-11 14:31:57

标签: php mysqli

所以我正在进一步深入学习,并遇到了一个问题:

从我的索引页面更新记录,我能够插入和删除但很难更新它们。

这样就会显示包含更新或删除链接的记录:

<?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);

2 个答案:

答案 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'])."'");
相关问题