【发布时间】:2021-09-09 08:56:15
【问题描述】:
我正在尝试编写一个 PHP 代码来连接并从 mySQL 获取数据单元格,并为每一行创建一个删除按钮,因为它像在 mySQL 数据库中一样递增。
请帮我弄清楚我做错了什么?!!
[我的表名是“vf”,它的结构是这样的]
ID Password1 Password2
[我使用的 PHP 变量在哪里]
$Connect=mysqli_connect($host,$user,$Pass,$db);
$QueryVF = mysqli_query($Connect,'SELECT * from vf');
$ID =$_POST['ID'];
$DelVF = mysqli_query($Connect,'DELETE from vf where ID =$ID');
/* ALSO TRIED This: $DelVF = mysqli_query($Connect,'TRUNCATE vf'); */
[我的 HTML 和 PHP 代码]
<html>
<body>
<form method="POST">
<table border="1" class=".input"> <!--vf Table-->
<tr>
<th>ID</th>
<th>Password 1</th>
<th>Password 2</th>
<th>Drop data</th>
</tr>
<?php
while ( $row = mysqli_fetch_array($QueryVF)){
echo'<tr>';
echo'<td>'.$row['ID'].'</td>';
echo'<td>'.$row['Password1'].'</td>';
echo'<td>'.$row['Password2'].'</td>';
echo "<td><button type=\"submit\" name=\"Delete\" oneclick=\"$DelVF\">Drop Data</button></td>";
if($_POST['Delete']){
while ($DelVF = mysqli_query($Connect,"'DELETE from vf where ID =$ID'") )
$DelVF;
echo "VF table's row is successfully deleted";
}
echo'</tr>';
}
?>
</table>
</form>
</body>
</html>
【问题讨论】:
-
phpMyAdmin 不是数据库。您从 mySQL 获取数据,而不是 phpMyAdmin。 phpMyAdmin 只是一个可用于管理 mySQL 服务器的应用程序(几个可用的应用程序之一)。
-
无论如何,您的代码似乎试图删除整个表,而不是特定行。此外,它可能会运行多次,而不是一次,因为您正在循环它。将处理删除的代码移到循环外,并确保表单提交您要删除的行的 ID,以便您可以编写带有合适的 WHERE 子句的 DELETE 查询并将行 ID 作为参数传递。如果你搜索一下,你肯定可以在网上找到很多关于这个基本概念的例子,这是一个常见的要求
-
P.p.s 请在使用前阅读标签说明 - “加工”标签是指特定工具,而不是一般加工。我会为你删除它和 phpMyAdmin 标签。也请参观一下,以便您充分了解该网站的运作方式 - stackoverflow.com/tour
-
附带说明,您的代码容易受到 SQL 注入的攻击,因为用户变量没有正确转义。永远不要在生产环境中测试你的代码。阅读更多:php.net/manual/en/security.database.sql-injection.php
标签: php html mysql forms mysqli