删除查询会删除任何行中的相同记录

问题描述 投票:0回答:2

在我的代码中,sql查询删除具有相同名称的表中的记录。例如,我有2条同名mani&mani的记录。此代码删除2条记录。

表格代码:

<form method="post" action="admin.php">
<h3>Delete a user</h3>
<select name="username">
  <?php
  $sql = mysqli_query($connection, "SELECT username FROM users");
  while ($row = $sql->fetch_assoc()){?>
  <option value="<?php echo $row['username']; ?>"><?php echo 
  $row['username']; ?></option>
  <?php }?>
</select>
<input type="submit" name="delete" value="Delete User">
</form>

SQL

<?php 
include('connect.php');
 if(isset($_POST['delete'])) {
  $username = $_POST['username'];
   mysqli_query($connection, "DELETE FROM `users` WHERE `username` = '$username' ");
   echo "User was deleted!";
}
?>
php
2个回答
3
投票

在这种情况下,您需要选择唯一值,例如ID

试试这个:

<form method="post" action="admin.php">
<h3>Delete a user</h3>
<select name="username">
  <?php
  $sql = mysqli_query($connection, "SELECT username FROM users");
  while ($row = $sql->fetch_assoc()){?>
  <option value="<?php echo $row['user_id']; ?>"><?php echo 
  $row['username']; ?></option>
  <?php }?>
</select>
<input type="submit" name="delete" value="Delete User">
</form>

SQL

<?php 
include('connect.php');
 if(isset($_POST['delete'])) {
  $user_id = $_POST['user_id'];
   mysqli_query($connection, "DELETE FROM `users` WHERE user_id = '$user_id' ");
   echo "User was deleted!";
}
?>

2
投票

是的,您的代码将删除具有匹配名称的行,因为您有Query:

DELETE FROM `users` WHERE `username` = '$username'

要删除特定行,您需要使用一些唯一值来引用该行,例如主键!

比如说:

如果用户有EmployeeIdCustomerIdStudentRollNo;你可以在where clause中使用这些选项。这些提示是Query中非常基本的东西。

© www.soinside.com 2019 - 2024. All rights reserved.