Ja det är möjligt. Det är ett klassiskt fall av tävlingstillstånd.
Den snabba förklaringen:
Det finns en chans att 2 förfrågningar samtidigt klara den första kontrollen, få $num == 0 och båda infogar en ny rad.
För att eliminera det måste du skapa en UNIQUE begränsning som täcker (user_id, ip, date) kolumner
Den långa förklaringen: