【发布时间】:2019-01-04 04:05:35
【问题描述】:
我试图弄清楚如何在一页中显示数据库表的所有行,所有值都是可编辑的,并且在它的末尾有一个提交按钮。我得到了一半的方程式,但由于某种原因它仍然无法正常工作。
我目前拥有的是一个显示 MYSQL 表的所有内容的表,并且所有字段都是可编辑的。所有每个字段都有一个提交按钮(这不是我想要的,但如果我必须要解决),但是在从数据库字段中编辑某些内容时,它会将我带到一个给我语法错误的页面:
“更新记录时出错:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'WHERE idnum = '0000'' 附近使用正确的语法”
以下来自FORM.PHP
<?php
include('config.php');
$result = mysqli_query($connect,"SELECT * FROM table123");
?>
<html>
<table>
<?php while ($res = mysqli_fetch_array($result)) { ?>
<tr>
<form action="test.php" method="post">
<td><input type="text" name="ret" value="<?php echo $res['ret']; ?>"></td>
<td><input type="text" name="code" value="<?php echo $res['code']; ?>"></td>
<td><input type="text" name="status" value="<?php echo $res['status']; ?>"></td>
<td><input type="hidden" name="idnum" value="<?php echo $res['idnum']; ?>"></td>
<td><input type="submit" name="update" value="Submit"></td>
</form>
</tr>
<?php } ?>
</table>
</html>
以下来自TEST.PHP
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$connect = mysqli_connect($servername, $username, $password, $dbname);
if (!$connect) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_POST['update'])) {
$sql = "UPDATE ssoretailerlist SET ret = '$_POST[ret]', code = '$_POST[code]', status = '$_POST[status]', WHERE idnum = '$_POST[idnum]'";
} else {
echo "Nothing was posted";
}
if (mysqli_query($connect, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($connect);
}
mysqli_close($connect);
【问题讨论】:
-
去掉 WHERE 前的逗号。如果您检查 mysqli errors,您会发现有语法错误。
-
谢谢你。这似乎已经解决了那个问题。
-
知道如何制作,以便页面底部只有一个提交按钮,而不是每一行?
-
将表单和提交标签移出循环,但随后您将不得不对变量名称进行一些表单调整,以便可以一次提交所有输入。跨度>
-
您的更新查询易受 SQL 注入攻击。请参阅stackoverflow.com/questions/60174/… 了解更多信息
标签: php html mysql database forms