2011-09-22 42 views
0

我正在PHP/MySQL中創建一個簡單的基於會話的應用程序。我爲每個連接到應用程序的用戶在其關聯的session_id中存儲一個會話。我想要做的就是在表格中插入特定數量的記錄後停止記錄。在MySQL中可能嗎?條件MySQL插入,如果記錄號設置在特定的數

下面是一個示例查詢,我認爲會起作用,但事實並非如此。

$dbSessionQ = "INSERT INTO `connSessions` (`sessID`, `expiry`) VALUES ('" . session_id() . "', '3600')"; 
$dbSessionQ .= "WHERE (SELECT COUNT(`sessID`) FROM `connSessions` < 5001) LIMIT 1"; 
+0

您可以使用'SELECT COUNT(sessID)FROM connSessions'查詢數據庫,並且* IF *結果小於允許的最大值,運行INSERT查詢 – Marco

+1

應用程序邏輯不應位於查詢中。 –

+0

這就是我的想法。只是想知道是否可以使用單個查詢。 – YoGi

回答

0

我不認爲INSERT有一個WHERE子句。 首先,您可以先查詢計數,然後執行插入操作。 (拆分SELECT和INSERT語句)。一旦你明白了這一點,使用一個簡單的事務來消除競爭條件。

0

您可以使用INSERT...SELECT。類似於

INSERT INTO `connSessions` (`sessID`, `expiry`) 
SELECT '" . session_id() . "', '3600' FROM `connSessions` 
WHERE (SELECT COUNT(`sessID`) FROM `connSessions`) < 5001 

但是既然你沒有從connSessions中選擇一些東西,我真的不知道你想在這裏做什麼。

相關問題