Как хранить случайный запрос SQL по его идентификатору?

$randWord = mysql_query("SELECT * FROM words ORDER BY RAND() LIMIT 1");

После того, как я вызываю случайную строку из моей таблицы (которая включает в себя слово, его определение и столбец идентификаторов), я хочу сохранить это слово и определение, чтобы я мог редактировать его, если нажата другая кнопка. Из того, что я видел в Интернете, общее решение заключается в том, чтобы сохранить его по его идентификатору. Как хранить случайный SQL-запрос по его идентификатору?

2 ответа

Вот пример того, где про совет

Никогда не используйте SELECT * в программном обеспечении, вместо этого укажите имена нужных столбцов.

помогли бы вам. Если таблица words имеет столбец id, сохраните это значение.


RAND() и выборка * сильно не рекомендуется из-за плохой производительности.

Предлагаемый пример:

$total = mysql_result(mysql_query('SELECT COUNT(*) FROM words'), 0);
$randWord = mysql_fetch_array(mysql_query('SELECT wid, word, definition FROM words LIMIT '.rand(0, $total - 1).', 1'), 0);

Когда mysql_result получает общее количество записей, mysql_fetch_array превращает результат в массив. rand (0, $ total - 1) генерирует случайное число между доступными записями и затем удовлетворяет запросу [LIMIT start, limit] в запросе.

Вы можете создать собственный класс DB, чтобы уменьшить избыточность кода.

Для вашего вопроса вы должны создать поле в качестве первичного ключа (или уникальный идентификатор). Как и поле "wid", которое я предложил выше. Затем вы можете вывести его как значение кнопки и так далее.

licensed under cc by-sa 3.0 with attribution.