2015-08-12 4 views
0

Я пытаюсь удалить из нескольких таблиц в одном запросе в mysql. это дает мне следующую ошибку:мой запрос на удаление не работает

ОШИБКА: У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «* FROM posts INNER JOIN fields_data НА posts.post_id = fields_data.post_id W» в строке 1

<?php 
include "connection.php"; 

[email protected]$_GET['pid']; 

$ssq="DELETE FROM `posts` INNER JOIN `fields_data` ON posts.post_id = 
fields_data.post_id WHERE posts.post_id= '$id'"; 
$query=mysqli_query($con,$ssq); 
if($query){ 
header("location:home.php?del=The post has been deleted successfully"); 
} 
else{ 
echo "ERROR:".mysqli_error($con); 
} 

?> 

ответ

2

Используйте имя таблицы после DELETE Ключевое слово:

$ssq="DELETE `posts` FROM `posts` INNER JOIN `fields_data` ON posts.post_id = 
fields_data.post_id WHERE posts.post_id= '$id'"; 

Использование имена псевдонимов для лучшего понимания

$ssq="DELETE p FROM `posts` as p INNER JOIN `fields_data` as fd ON p.post_id = 
fd.post_id WHERE p.post_id= '$id'"; 

EDIT:

Если вы хотите удалить записи из обеих таблиц, просто указать имена таблиц после DELETE ключевого слова:

$ssq="DELETE `posts`,`fields_data` FROM `posts` INNER JOIN `fields_data` ON posts.post_id = 
fields_data.post_id WHERE posts.post_id= '$id'"; 
+0

это не может быть сделано без использования псевдонимов ??? или его просто лучший способ? –

+1

@MashhoodAli: Конечно, вы можете сделать это без псевдонима. Я использовал его для лучшего понимания. Позвольте мне отредактировать мой ответ. –

+0

@MashhoodAli: Отредактировал мой ответ, используя оба способа. –

2

Попробуйте это ..

Вы часто используют INNER JOIN пункт в инструкции SELECT для выбора записей из таблицы, имеющих соответствующие записи в других таблицах. Чтобы сделать его более удобным, MySQL также позволяет вам использовать предложение INNER JOIN с оператором DELETE для удаления записей из таблицы, а также соответствующих записей в других таблицах, например, для удаления записей из таблиц T1 и T2, которые удовлетворяют конкретному условию , можно использовать следующее заявление:

DELETE T1, T2 
FROM T1 
INNER JOIN T2 ON T1.key = T2.key 
WHERE condition 

Ваш код

$ssq="DELETE posts,fields_data FROM `posts` as posts INNER JOIN `fields_data`as fields_data ON posts.post_id = 
fields_data.post_id WHERE posts.post_id= '$id'"; 

http://www.mysqltutorial.org/mysql-delete-join/

+0

приведенный выше запрос удаляется только из одной таблицы. –

+0

его удаление записей только из таблицы сообщений. –

+1

У меня есть обновление Проверьте и дайте мне знать –