我是php的新手。我正在創建小型在線考試應用程序。我在MySql中創建了一個問題表,並希望在頁面上只顯示一個問題。提交該問題的答案後,在頁面上顯示另一個問題。任何人都可以幫助我,我該怎麼做?由於從數據庫中獲取隨機數據
1
A
回答
0
SELECT * FROM問題ORDER BY RAND()LIMIT 4
0
編輯2 這裏是僞代碼更新來解決與原代碼的一些問題。
基本上這裏的變化是從數據庫中獲取所有問題ID,然後洗牌。這可以避免自動遞增序列中丟失ID的情況,這很可能。
舊代碼的另一個變化是從數據庫中抓取所有選定的問題,而不是一次一個。不知道我在那裏想什麼。
下面是一些僞代碼:
// Get all questions ids. This should be fine since there shouldn't be too many cases where you will have more than 1000 questions.
$questionIds = db.selectIdsFromQuestionsWhereTypeIsSports();
// Shuffle array so the question ids are out of order
shuffle($questionIds);
// Number of questions you want
$quizLength = 5;
// select your questions
$selectedQuestions = array_slice($questionIds, 0, $quizLength);
// Now fetch all data for selected questions
$quiz = db.fetchByWhereIdIn($selectedQuestions);
// Now do whatever with your question
**原始 我不會使用MySQL rand
功能。如果你有很多行,它不會提供很好的性能。此外,您還有機會再次選擇相同的問題。
所以我會做的是從數據庫中檢索你的問題集,然後在php中洗牌。
如果您有成千上萬的問題,那麼我會建議隨機生成一個與您的自動增量ID相關的數字序列。如果你沒有使用自動增量ID,那麼這將不起作用。
因此,如果您想要詢問10個問題,並在數據庫中有100個問題,則例如在1和100之間生成10個數字。
這種方法的一個缺點是如果你的自動增量序列有漏洞。如果你沒有太多的數字,你可以把它扔出去,隨機挑選另一個數字。
下面是一些僞代碼:作爲逗號seprated
$_SESSION['asked_question_ids'] = $asked_question_ids;
獲得其尚未使用的問題ID從會議提出的隨機問題會議
// Get a count of your questions from the database
$totalQuestions = db.count();
// Generate an array sequence/range
$questionIds = range(1, $totalQuestions);
// Shuffle array so the numbers are out of order
shuffle($questionIds);
// Store your questions
$quiz = array();
// Number of questions you want
$quizLength = 5;
// Now you can retrieve questions like so
while (count($quiz) == $quizLength) {
$question = db.fetchById(array_pop($questionIds);
if ($question != null) {
$quiz[] = $question;
}
}
// Now do whatever with your question
0
組提出的問題ID
$asked_question_ids = '3, 4, 5, asked queston ids from session'
SELECT * FROM questions WHERE qid NOT IN ($asked_question_ids) ORDER BY RAND() LIMIT 1
相關問題
- 1. 獲取從數據庫中隨機數據,而不
- 2. PHP代碼從鏈接數據庫中獲取隨機數據
- 3. nhibernate從數據庫中隨機數據
- 4. 如何從MySQL數據庫中獲取隨機數的行?
- 5. 如何從iphone sdk中隨機獲取數據庫中的值?
- 6. 使用python從數據庫中隨機獲取字符串
- 7. 從Firebase數據庫中獲取隨機值
- 8. 的LINQ to SQL從數據庫中獲取隨機排
- 9. 如何從oracle數據庫中隨機獲取記錄?
- 10. PHP從數據庫中獲取唯一的隨機值
- 11. 如何從數據庫中獲取隨機記錄
- 12. 從Firebase數據庫中獲取隨機孩子
- 13. 如何從SQLite數據庫中獲取隨機記錄?
- 14. 從SQLite數據庫中獲取10條隨機記錄
- 15. Bookshelf - 從數據庫中獲取隨機條目
- 16. 從數據庫中獲取隨機和特定項目
- 17. 隨機從數據庫中獲取數據基於使用.net c的條件#
- 18. 從數據庫中隨機選擇
- 19. 我從數據庫SQL從數據庫中獲取數據
- 20. 從數據庫更新數據從數據庫獲取數據
- 21. 從psql數據庫中獲取數據
- 22. 從moodle數據庫中獲取數據
- 23. 從數據庫中獲取數據
- 24. Android從數據庫中獲取數據
- 25. PDO從數據庫中獲取數據
- 26. 從數據庫中獲取數據。
- 27. CodeIgniter從數據庫中獲取數據
- 28. Django從數據庫中獲取數據
- 29. 從數據庫表中獲取數據
- 30. 從數據庫asp.net中獲取數據