2017-08-30 3 views
2

J'ai une tâche. Je dois insérer deux colonnes dans une table mysql.annule l'insertion si la même valeur de colonne est insérée pour plus de 10 lignes- mysql-php

insert into `alreadysent` VALUES (NULL,'".$mobile_number."','".$user."','".$sender."','".date('Y-m-d H:i:s')."'); 

Si le même numéro de mobile est inséré 10 fois, il doit être accepté. Mais il ne devrait pas accepter après la 10ème insertion pour ce mobile_number.

Je l'aurais fait facilement en utilisant instruction select et insérer si compte moins de 10. Mais je ne peux pas faire dans ce senario. SO vérifiant une autre option optimale. Nous pouvons arrêter l'insertion sur une entrée dupliquée si nous déclarons une colonne unique, de même y a-t-il quelque chose qui puisse donner une exception après n nombre d'insertions? Je vous remercie!

+7

C'est logique métier et ne doit pas être dans la requête SQL. mettez-le dans votre code php – Jens

+1

En savoir plus sur les instructions préparées pour empêcher l'injection SQL – Jens

+1

Pourquoi est-il impossible de sélectionner et de compter avant d'insérer? – BeetleJuice

Répondre

1

Vous pouvez essayer avec condition Insérer comme ceci:

INSERT INTO TABLENAME(MOBILENUMBER, USER, SENDER, DATE) 
SELECT 'XXXX', 'XXXX', 'XXXX', 'XXXX' 
    FROM DUAL 
    WHERE (SELECT COUNT(*) FROM TABLENAME 
         WHERE MOBILENUMBER = 'XXXX') < 10 
1

Vous pouvez faire quelque chose comme ceci:

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 .....)