Как удалить строку, если несколько строк имеют одинаковый идентификатор

У меня есть 2 таблицы, users а также short_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

Решение

Вы должны ВСЕГДА использовать поле автоинкремента для каждой создаваемой таблицы, чтобы у вас всегда был уникальный идентификатор, используемый при удалении строк.

Если это не вариант, вам нужно изменить запрос на удаление, чтобы убедиться, что вы удаляете правильную строку:

$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";

Поскольку он уникален, нет необходимости упоминать все остальные поля.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]