Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果记录编号设置为特定编号,则有条件插入MySQL_Php_Mysql_Insert - Fatal编程技术网

Php 如果记录编号设置为特定编号,则有条件插入MySQL

Php 如果记录编号设置为特定编号,则有条件插入MySQL,php,mysql,insert,Php,Mysql,Insert,我正在用PHP/MySQL创建一个简单的基于会话的应用程序。我正在mysql表中为每个连接到应用程序的用户存储一个会话及其关联的会话id。我要做的是在表中插入指定数量的记录后停止录制。在MySQL中可能吗 下面是一个我认为可行的示例查询,但事实并非如此 $dbSessionQ = "INSERT INTO `connSessions` (`sessID`, `expiry`) VALUES ('" . session_id() . "', '3600')"; $dbSessionQ .= "WH

我正在用PHP/MySQL创建一个简单的基于会话的应用程序。我正在mysql表中为每个连接到应用程序的用户存储一个会话及其关联的会话id。我要做的是在表中插入指定数量的记录后停止录制。在MySQL中可能吗

下面是一个我认为可行的示例查询,但事实并非如此

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

我认为INSERT没有WHERE子句。 首先,您可以先查询计数,然后进行插入。拆分SELECT和INSERT语句。一旦你明白了这一点,使用一个简单的事务来消除竞争条件。

你可以使用它。差不多

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

但是,由于您没有从connSessions中选择某些内容,我真的不明白您在这里想要做什么

您可以使用SELECT COUNTSERSESSID FROM CONNSCESSIONS查询db,如果结果小于您允许的最大值,请运行您的INSERT query应用程序逻辑。这也是我的想法。我只是想知道使用单一查询是否可行。@YoGi,使用insert into.是否可行。。选择语法,但我不建议这样做。