当多行具有相同的ID时,如何删除行

时间:2014-10-10 15:24:43

标签: php mysql delete-row

我有2个表,usersshort_style

users的字段:

id int  primary  not null auto increment
username
password
firstname
lastname

用户向表users插入的数据:

users
id     username     password     firstname     lastname   
1      jsmith       md5hash      john          smith 
2      jbrown       md5hash      jane          brown 

用户向表short_style插入的数据:

short_style
id     style_name     style_cost     style_time     number_of_styles   
1      bald           10             30             1
2      wash           5              15             2   
1      shave          12             30             3   
2      line           8              15             4   
1      wash           Free           15             6   
2      color          20             30             7   

我可以让用户添加新样式,该代码非常完美。

我也可以让用户更新他们的数据,这些代码非常完美。

我一直在删除用户数据,因为我不知道如何定位number_of_styles数据,因为这是唯一的唯一数据。

从我所学到的(在这么短的时间内)DELETE只取2个参数,表名和表行(我假设)。

我该如何使用?

对于长html我很抱歉,我仍然没有想出如何在评论中显示html。我有什么:

<?php
if (isset($_POST['delete_servicename'])&&
isset($_POST['update_category'])) {

$delete_servicename = $_POST['delete_servicename'];
$category = $_POST['update_category'];

$atta = '_name';
$delete = "$category$atta";

$query = "SELECT $delete  FROM $category     WHERE `id`='".$_SESSION['user_id']."'";
$query_run = mysql_query($query);
if(mysql_num_rows($query_run)==1) {
$dquery = "DELETE FROM $category WHERE $id = '".$_SESSION['user_id']."'";
 }
}
?>

<form action="services_update.php" method="POST">
  <div class="a_u_d_sort">
    <ul>
      <li class="a_u_d_sort_left">
        <p>Category:</p>
      </li>

      <li class="a_u_d_sort_right">
        <select name="update_category">
          <option value="">select</option>
          <option value="short_style">Short Style</option>
          <option value="medium_style">Medium Style</option>
          <option value="long_style">Long Style</option>
          <option value="other_services">Other Service</option>
        </select>
      </li>
     </ul>
   </div>
   <div class="a_u_d_sort">
    <ul>
      <li class="a_u_d_sort_left">
        <p>Service Name:</p>
      </li>

      <li class="a_u_d_sort_right">
        <input type="text" name="delete_servicename"></input>
      </li>
     </ul>
    </div>
    <button class="add" type="submit">Delete</button>
  </form>

1 个答案:

答案 0 :(得分:1)

您应该始终为您创建的每个表使用自动增量字段,以便在删除行时始终拥有唯一的ID。

如果这不适合您,则必须修改删除查询以确保删除正确的行:

$dquery = "DELETE FROM $category WHERE $id = '".$_SESSION['user_id']."' AND `style_name` = $stylename AND style_cost = $stylecost AND style_time = $styletime AND number_of_styles = $numberofstyles LIMIT 1";

修改

我没有意识到你的number_of_styles是自动增量。在这种情况下,你可以简单地说:

$dquery = "DELETE FROM $category WHERE number_of_styles = $numberofstyles LIMIT 1";

由于它是独一无二的,因此无需提及所有其他领域。