簡體   English   中英

使用PHP Mysql刪除行

[英]Deleting row using PHP Mysql

如果沒有行計數或小於表1中的行數,則嘗試從表2中刪除。 使用變量($ 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`)");
`WHERE g.`group name` = `group name`)

那就是說

where `group name` = `group name`

我總是懷疑這是真的

where `group name` = 'group name'

要么

where `group name` = $group_name

在第一種情況下,您錯過了a =應該是

if($r['total'] == 0 ) {

如果您只是想刪除一個表的記錄,而該表的第二個表中沒有對應的匹配項,則MySQL中的DELETE方法支持LEFT JOIN語法:

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'

除了以前的答案外,我還將交換

$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中的鍵,但默認為字符串'user_id'(盡管有警告)。

另外,您是否檢查了會話是否已啟動( session_start() )和$ _SESSION ['user_id']是否已設置?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM