如果相同的列值插入超过10行,则中止插入 - mysql-php
问题描述:
我有一个任务。我必须插入几列到一个MySQL表。如果相同的列值插入超过10行,则中止插入 - mysql-php
insert into `alreadysent` VALUES (NULL,'".$mobile_number."','".$user."','".$sender."','".date('Y-m-d H:i:s')."');
如果同样的mobile_number被插入10次,它应该接受。但它不应该在第10次插入该移动号码后接受。
如果count小于10,我会很容易地使用select语句并插入。但是我不能在这个senario中做。所以检查一些其他的最佳选择。如果我们将列声明为唯一的,那么我们可以停止在重复条目中插入,类似地,在n个插入之后是否有任何可以给出异常的东西?谢谢!
答
你可以有条件插入这样的尝试:
INSERT INTO TABLENAME(MOBILENUMBER, USER, SENDER, DATE)
SELECT 'XXXX', 'XXXX', 'XXXX', 'XXXX'
FROM DUAL
WHERE (SELECT COUNT(*) FROM TABLENAME
WHERE MOBILENUMBER = 'XXXX') < 10
答
你可以做这样的事情:
DECLARE @cnt INT
SELECT @cnt = COUNT(*) FROM table_name where mobile_number = '".$mobile_number."'
IF @cnt < 10
INSERT INTO table_name VALUES(col1, col2, col3 .....)
这是业务逻辑,不应该在SQL查询。把它放到你的php代码中 – Jens
了解准备好的语句以防止SQL注入 – Jens
为什么在插入之前你不能选择和计数? – BeetleJuice