使用PHP Mysql删除行

时间:2014-06-05 16:13:50

标签: php mysql

如果不存在行计数或< 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`)");

3 个答案:

答案 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>