Проверьте, не дублирована ли запись за последние 10 секунд

Можно ли проверить, была ли вставлена ​​повторяющаяся запись в течение последних 10 или 20 секунд?

На данный момент я делаю это:

INSERT INTO user_pointshistory (ptimestamp, player, points) VALUES (NOW(),'$playerid',$thisPoints)

То, что я хочу проверить, — это запись того же игрока с точно такими же точками, которые были вставлены в течение последних 10 секунд!

Можно ли это сделать?

————- РЕДАКТИРОВАТЬ —————

Я уже пробовал это, но без удачи? Должен ли я быть в состоянии сделать это?

$sql = "SELECT * FROM user_pointshistory WHERE player='111' AND points=10000 AND ptimestamp < DATE_SUB(NOW(), INTERVAL 10 SECOND)";
$result = mysqli_query($conn,$sql) or die(mysqli_error());
if($row = mysqli_fetch_array($result)){
echo 'GOT A RECORD';
} else {
echo 'READY FOR AN RECORD';
$sql = "INSERT INTO user_pointshistory (ptimestamp, player, points) VALUES (NOW(),'111',10000)";
mysqli_query($conn,$sql);
}

Надеемся на помощь и заранее спасибо 🙂

-1

Решение

Следующее не будет работать, потому что $row не определено, где вы бы лучше всего использовать mysqli_num_rows() проверить, существует ли строка.

if($row = mysqli_fetch_array($result)){

Я бы заменил это на:

$numrows = mysqli_num_rows($result);
if($numrows > 0){
echo "GOT A RECORD";
}

в то время как вы сказали в комментариях, поворачивая < в ptimestamp < DATE_SUB для >

1

Другие решения

Я настоятельно поддерживаю ответ rjdown в том, что вы должны создать временную метку, чтобы вы могли сначала проверить базу данных с сохраненной временной меткой и новой временной меткой, сгенерированной перед отправкой новой строки.

0

По вопросам рекламы [email protected]