让我说我有这些变量:
$ post_id = 222;
$ IsLoggIn = 2;
我在五个不同的表中有相同的列“post_id”名称。 我想编写一个sql语句来检查并查看是否有一个列名为“post_id”的行,其值等于变量“$ post_id”并删除该行
注意:除了“public_feed_table”之外,可能没有 post_id 等于变量的行$ post_id“所以sql语句应该在删除之前检查是否有一行。
我想要一个可以完成这项工作的单个sql语句。
我尝试的是下面的内容。请帮忙:
global $dbc_conn,
$public_feed_table,
$images_table,
$comments_table,
$rating_table,
$notification_table,
$IsLoggIn;
$sql = "DELETE
p,i,c,r,n
FROM
$public_feed_table p
LEFT JOIN
$images_table i,
$comments_table c,
$rating_table r,
$notification_table n
ON
i.post_id,
c.post_id,
r.post_id,
n.post_id=p.post_id
WHERE p.post_id='$post_id'
AND p.user_id='$IsLoggIn'
";
//query database
$query = mysqli_query($dbc_conn,$sql);
答案 0 :(得分:1)
你加入Syntax是worng。必须是:
$sql = "DELETE p,i,c,r,n
FROM
$public_feed_table p
LEFT JOIN
$images_table i ON
p.post_id = i.post_id
LEFT JOIN
$comments_table c ON
p.post_id = c.post_id
LEFT JOIN
$rating_table r ON
p.post_id = r.post_id
LEFT JOIN
$notification_table n ON
p.post_id=n.post_id
WHERE p.post_id='$post_id'
AND p.user_id='$IsLoggIn'
";
答案 1 :(得分:0)
您的JOIN
语法非常奇怪。它应该是
FROM
$public_feed_table p
LEFT JOIN
$images_table i ON i.col = p.col,
LEFT JOIN $comments_table c ON p.col = c.col,
** col
例如,将其替换为每个表架构的实际列名