如果不存在行计数或< p,则尝试从table.2中删除比表1中的一个。使用变量($ group)。我认为问题是在删除table.1中的行之后,没有变量可以在table.2中删除,因此它不会删除该行。我不知道这是否有意义。这是代码。
$q = mysql_query("SELECT `group name` FROM `group` WHERE cid = '$id'") or die(mysql_error());
list($group) = mysql_fetch_row($q);
$n = mysql_query("select count(`group name`) as total from `group` WHERE user_id
= '$_SESSION[user_id]' AND cid = '$id' ");
$r = mysql_fetch_array($n);
if($r['total'] = 0 ) {
mysql_query("DELETE FROM `group log`
WHERE `group name`='$group'
") or die(mysql_error());
}
我也尝试了这个,但它只是在用户删除所有行后删除了行:
mysql_query("DELETE FROM `group log`
WHERE NOT EXISTS(SELECT NULL
FROM `group` g
WHERE g.`group name` = `group name`)");
答案 0 :(得分:1)
`WHERE g.`group name` = `group name`)
多数民众赞成
where `group name` = `group name`
总是如此,我怀疑你是想说
where `group name` = 'group name'
或
where `group name` = $group_name
在第一种情况下,你错过了=
它应该是
if($r['total'] == 0 ) {
答案 1 :(得分:1)
如果您只想删除一个表中没有第二个表中相应匹配项的记录,则MySQL中的DELETE
方法支持LEFT JOIN
语法:< / p>
DELETE gl.*
FROM `group log` gl
LEFT JOIN `group` g
ON g.`group name` = gl.`group name`
WHERE g.`group name` IS NULL
或者,如果您有一个特定的组,那么您希望从日志表中删除:
DELETE gl.*
FROM `group log` gl
LEFT JOIN `group` g
ON g.`group name` = gl.`group name`
WHERE g.`group name` IS NULL
AND gl.`group name` = '$group'
答案 2 :(得分:0)
除了以前的exussum答案,我会交换
$n = mysql_query("select count(`group name`) as total from `group` WHERE user_id='$_SESSION[user_id]' AND cid = '$id' ");
与
$n = mysql_query("select count(`group name`) as total from `group` WHERE user_id= '{$_SESSION['user_id']}' AND cid = '$id' ");
要避免未定义的常量错误通知,具体取决于使用的错误设置:
$ _ SESSION [user_id] 实际上是在寻找常量 user_id 的值,以用作 $ _ SESSION 中的键,但默认值为字符串&#39; user_id&#39; (尽管有警告)。
此外,您是否已检查会话是否已启动( session_start())并且 $ _ SESSION [&#39; user_id&#39;] 已设置?< / p>