php - Mysql SELECT,查找行数,然后在单个查询语句中插入

标签 php mysql mysqli


假设我们有收件箱表并且一次最多只能接收 50 条消息,为此我使用以下代码:

$maximum_messages_in_inbox = 50;

$query1 = mysql_query("SELECT * from inbox");
if(mysql_num_rows($query1) > $maximum_messages_in_inbox)
{
   echo "Message memmory if full please try again later";
}
else
{
   mysql_query("insert into inbox set text = '$text' , sender = '$sender' ");
}

这段代码运行良好,但每次都会执行两个查询。
我的问题是我们能否在单个查询中调整上述目的,例如:

mysql_query("select * from inbox if num > 50 insert else error");
if(error)
{
   echo "Message memmory if full please try again later";
}

期待您的合作。谢谢

最佳答案

您可以使用此技巧在 SQL 中执行条件 INSERT:

INSERT INTO inbox(text, sender)
SELECT 'text value', 'sender value'
FROM dual
WHERE (SELECT COUNT(*) FROM inbox) < 50;

只有满足 WHERE 子句时,INSERT 才会被处理。

关于php - Mysql SELECT,查找行数,然后在单个查询语句中插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307867/

相关文章:

mysql - 根据表中的另一个字段选择某个字段

php - 我想让所有有球队名称的球员

php - Linux 服务器上的内部服务器错误 (500) 和 PHP max_execution_time

php - 当值为 null 时查询出现问题

MySql Update 语句正在运行但未更新条目

php - 如果存在混合类型数组,如何为 IN 子句准备语句?

php - mysqli 连接 - 如何创建用户名和密码? Windows 服务器2008

php - Laravel 5 验证唯一传递变量占位符

php - html2pdf: <page></page> 生成一个空白页

mysql - 在 MySQL 中计算重叠