2015-01-12 4 views
-1

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

А теперь я делаю это:

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

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

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

------------- EDIT --------------

Теперь я попытался это, но без удачи? Разве я не могу это сделать?

$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); 
} 

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

+2

Вы хранить любой вид временной метки в строке? Это, безусловно, поможет. – rjdown

+0

Упс, был неправильный SQL, который я опубликовал. Просто отредактировал мой пост с правильным SQL: -/ptimestamp - DATETIME – Mansa

+0

Этот ответ может помочь http://stackoverflow.com/a/4056660/ –

ответ

0

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

+0

Извините, это был неправильный SQL, который я опубликовал ... ptimestamp - это поле DATETIME – Mansa

+0

Итак, теперь, прежде чем вставлять запись, вы должны сделать запрос SELECT на игроке, который вы собираетесь вставить INSERT, и если $ newdate - $ row [' ptimestamp ']> = 10 {INSERT} ELSE {echo ERROR} – Yoda

+0

Хорошо, просто подумал, что это может быть сделано в одном предложении, но я попробую это (y) – Mansa

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 к >