Одновременный вывод данных и обновление в бд

Есть база из 10.000 строк, каждая из них это новое задание для сотрудника. Нужно удалять строку из БД, после того, как сотрудник перейдет на страницу и нажмет на кнопку «выдать новую строку». Данные новой строки выведутся, но из БД удаляться, чтобы при выполнении нового задания или выполнении одновременно с другим сотрудником, не выдавались одни и те же строки.

Делаю так:

  1. Создаю таблицу (temp_result) для сохранения промежуточных данных
  2. Вставляю рандомный id из основной таблицы (datas)
  3. Выбираю нужное поле text_user и при помощи INNER JOIN сверяю, чтобы промежуточные и в основной таблице были одинаковы.
  4. Обновляю данные в основной таблице
  5. Удаляю промежуточные данные (таблицу temp_result)

Обновляются все поля status на read сразу (а нужно только для определенного id, а не для всех), также ничего не выводится на экран. Подскажите, как исправить? Попробовал поставить два последних запроса после while, теперь выводятся сразу все данные и разом обновляются в бд.

    <?php
        require_once 'con.php';
             $sql = $link->query("CREATE TABLE temp_result (id INT);");
             $sql = $link->query("INSERT temp_result (id)
SELECT id FROM datas WHERE status ='unread' ORDER BY RAND();");
             $sql = $link->query("SELECT * FROM datas d
  INNER JOIN temp_result tr ON tr.id = d.id;");
             $sql = $link->query("UPDATE datas SET status='read' WHERE id IN (SELECT id FROM temp_result);");
             $sql = $link->query("DROP TABLE temp_result;");

  while ($result = mysqli_fetch_array($sql)) {
    echo "{$result['text_user']}";
  }
  mysql_free_result($result);
?>

Ответы (0 шт):