2012-05-25 3 views
2

это мой запросзапрос не удаляет данные из БД

$db2=mysql_connect("localhost","root",""); 
    mysql_select_db("my_requests",$db2); 

    $query=mysql_query("SELECT * FROM details INNER JOIN product ON details.user_id = product.user_id"); // find the city 
    $row=mysql_fetch_array($query);// save record 

     $id=$row['user_id']; 
     echo "$id"; 


     $query1=mysql_query("DELETE * FROM details WHERE details.user_id=$id"); 
     $query2=mysql_query("DELETE * FROM product WHERE product.user_id=$id"); 

Вот у меня есть две таблицы продуктов и деталей, идентификатор пользователя является первичным ключом в деталях и сделал внешний ключ продукта.

позволяет предположим, что у меня есть две записи в базе данных с user_id = 12, а другой с user_id = 11 1. когда я взять innerjoin двух таблиц и попытаться отобразить user_id-х он показывает только один user_id 12 2.когда Я пытаюсь удалить данные с помощью user_id, он не удаляет данные из таблицы.

простите за плохой английский

+2

Пожалуйста, прекратите писать новый код с древней mysql_ * функции. Они больше не поддерживаются, и сообщество начинает процесс осуждения. Вместо этого вы должны узнать о подготовленных операторах и использовать либо PDO, либо MySQLi. – Bono

+1

В вашем запросе попробуйте 'Select product.user_id From ...' – Bob

ответ

1

В вашем SELECT запросе необходимо указать тх таблицу, чтобы получить * как details.* или products.*, еще потому что вы соединяющий две таблицы. В вашем случае это тот же результат.

Вы также должны поместить $row=mysql_fetch_array($query); в цикле, чтобы получать каждый строк, то у вас есть плохой DELETE синтаксис:

while($row=mysql_fetch_array($query)) { 
    $id=$row['user_id']; 
    echo "$id"; 

    $query1=mysql_query("DELETE FROM details WHERE details.user_id=$id"); 
    $query2=mysql_query("DELETE FROM product WHERE product.user_id=$id"); 


} 
+0

Я попытался сделать то же самое, он удалил из таблицы prduct user_id = 11 и не удалял остальные записи – Shiven

+0

И ваш скрипт повторял больше '$ id', чем удалялся? – jbrtrnd

+0

Нет, он просто отображает один идентификатор, который удаляется из таблицы продуктов – Shiven

7

proper syntax of a DELETE query не включает *

DELETE FROM product WHERE product.user_id=$id 
//^^^^^^^^^ 

Если вы сделать некоторые основные проверки ошибок и отладки, то API сообщит о синтаксической ошибке.

// This query has a syntax error and will return FALSE... 
$query1 = mysql_query("DELETE * FROM details WHERE details.user_id=$id"); 
if (!$query1) { 
    // On failure, see what your error was. 
    echo mysql_error(); 
} 

выше сообщит об ошибке, подобное:

ERROR 1064 (42000): У вас ошибка в вашем SQL синтаксиса; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «* FROM

+0

http://www.w3schools.com/sql/sql_delete.asp говорит, что я могу использовать DELETE * – Shiven

+1

@Shiven Не использовать w3schools. Это ссылка на синтаксис SQL, но не документация MySQL. MySQL не разрешает * там. Проверьте документы MySQL напрямую. –

+0

@Shiven Кроме того, w3schools часто устаревают. Это, как известно, ненадежное. Лучше всегда идти к исходному источнику. –

Смежные вопросы