如何使用php从html表和mysql表中删除指定行

如何使用php从html表和mysql表中删除指定行,php,mysql,Php,Mysql,我目前正在使用php中的mysql数据库中的html表显示数据,并且我还允许用户仅从表中删除自己的数据,我的问题是如何将删除按钮与相关行相匹配,当用户单击删除按钮时,只应删除指定的行,但是它会删除数据库中与用户连接的所有记录,请帮助我如何做到这一点,PS我是一名学习者,并且对php 更新的代码在这里 <!doctype html> <html> <head> <meta charset="utf-8"> <title>View c

我目前正在使用
php
中的
mysql
数据库中的html表显示数据,并且我还允许用户仅从表中删除自己的数据,我的问题是如何将删除按钮与相关行相匹配,当用户单击删除按钮时,只应删除指定的行,但是它会删除数据库中与用户连接的所有记录,请帮助我如何做到这一点,PS我是一名学习者,并且对
php

更新的代码在这里

   <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>View cart-d2dn</title>
</head>

<body>
<?php
include('header.php'); ?>
<h1>View Cart</h1>

<table border='1'>
         <tr>
         <th> VIN </th>
         <th> Vehicle Description </th>
         <th> Price </th>
         </tr>
<?php
session_start();
$servername = "";
$username = "";
$password = "";
$dbname = "";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


$sql = "SELECT vin,description,price FROM products where user_id='".$_SESSION['use_i']."' ";
$result = mysqli_query($conn, $sql);

$uq=mysql_query("select * from td_user where user_id='".$_SESSION['use_i']."' ");
$u_row=mysql_fetch_array($uq);
if(isset($_REQUEST['delete']))
{
$sql_s =" DELETE FROM `products` WHERE user_id='".$u_row['user_id']."' AND vin='".$_REQUEST['vin']."' " ;
$result_s = mysqli_query($conn,$sql_s) ;
if($result_s == true)
{
echo '<script language="javascript">';
echo 'alert("Deleted successfully")';
echo '</script>';
}
else
{
echo '<script language="javascript">';
echo 'alert("Error in deletion")';
echo '</script>';
}
}
if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {

    echo '<tr>
            <td>'.$row['vin'].'</td>
            <td>'.$row['description'].'</td>
            <td>'.$row['price'].' </td>
            <td>  <form method="post"> <input type="submit" name="delete" value="Delete">
 <input type="hidden" name="vin" value="'.$row['vin'].'">
 </form></td>
        </tr>';

    }   
}
else
{
echo "Your cart is empty!";
}
?>        
<?php
echo '</table>';
?>
<form><input type="button" value="Go back" onClick="window.location.href='automobile_list.php'">
<input type="button" value="Submit" onClick="window.location.href='mail.php'">
</form>

<?php

mysqli_close($conn);
?>

<?php

include('footer.php');
?>
</body>
</html>

查看购物车-d2dn
查看购物车
VIN
车辆描述
价格
if(mysqli\u num\u行($result)>0){
while($row=mysqli\u fetch\u assoc($result)){

echo'只有在MySQL表具有主键/唯一键或每行不同时,才能执行相同的操作

如果
VIN
是唯一的,则让我显示您需要更改的位置。您需要发送带有删除请求的唯一密钥,以检测要删除的行。将删除按钮代码更改为:

 <form method="post"> <input type="submit" name="delete" value="Delete">
      <input type="hidden" name="vin" value="'.$row['vin'].'">
 </form>
还要删除用于检索用户ID的mysql代码(就在上面编写的代码之前)。[并在显示表之前放置此删除代码(在从产品表中选择之前,请查看注释以了解更多信息:p)]


如果
vin
不是主键,则通过以下方法在表中添加主键:

在mysql工作台中:右键单击->更改表->将列
ID
添加为
INT
,并检查
PK
(主键),
AI
(自动递增)->应用->完成

现在使用
ID
代替
VIN


正如您所说,您是PHP新手。那么让我给您一个建议:

使用
$\u POST
代替
$\u请求
因为POST变量包含仅通过POST方法发送的数据,但
请求
同时包含POST和GET数据…因此任何人都可以通过键入URL进行删除,如
?delete=delete&vin=3


顺便说一句,这不是问题所在,但将来会对您有所帮助。

在使用mysql删除行时,为每行指定一个idrow@MurtazaHussain:您能简单地告诉我如何给一行一个id,以便我能试着理解…如果我错了,请道歉
session\u start();
应该始终位于页面顶部,甚至在html标记上方。您的查询返回id?是的,我在数据库中有唯一的id,但我不想向用户显示它,而且VIN也是唯一的编号。像idyes一样,VIN和用户id都是主键。也就是说,我将其用作数据库中的复合键…@vivek:很好,您可以在其中使用此解决方案案例:)|如果您需要,我也给出了一个建议。拉朱普特:很抱歉打扰您,在按两次之后,它只执行删除操作。@vivek它第一次删除,但您的删除php代码在表的下面(其中u显示记录)。这就是为什么再次单击“删除”会重新加载页面,然后您会看到实际的表。。|解决方案是在显示表之前放置PHP删除代码。在您的例子中,如果(!$conn){die(“连接失败:”.mysqli_connect_error());}
;在PHP中,PHP代码应该位于顶部,除非它需要位于不同的位置。[感谢您接受答案,如果有用,您也可以使用向上投票。]感谢您的朋友,我将尝试将代码放在表上方[我尝试使用向上投票作为您的答案,但我没有15个代表可以使用向上投票,所以只有我接受它作为答案]
 <form method="post"> <input type="submit" name="delete" value="Delete">
      <input type="hidden" name="vin" value="'.$row['vin'].'">
 </form>
  if(isset($_REQUEST['delete']))
  {
    $sql_s =" DELETE FROM `products` WHERE user_id='".$_SESSION['use_i']."' AND vin='".$_REQUEST['vin']."' ";
  }