dsdt66064367 2015-01-15 09:11
浏览 17

从mysql中随机记录选择

I have a database with four fields QiD primary key, Question,answer,score. I want to get one question at a time randomly... but for the user who take the quiz the question nos should be from 1 to N where N is the total no. of questions.

when the user select the option(radio button)..it should be compared with answer field's data for that question and score should be updated.

Several tricks i tried but could not get it...pl. help me..

  • 写回答

4条回答 默认 最新

  • dtf579777 2015-01-15 09:22
    关注

    Many ways to do this, you can use RAND() function but it's not very good in term of performances :

    SELECT * FROM question
    ORDER BY RAND()
    LIMIT 1
    

    A faster method is to determine the random number in PHP (or other language) :

    // first request
    SELECT MAX(id) FROM question
    // PHP part
    $random = rand(0, $theMaxId);
    // SQL request to get a random question
    SELECT * FROM question WHERE id = $random
    

    For a SQL version, please see : MySQL select 10 random rows from 600K rows fast

    Edit (complete example with PDO):

    $req = $db->query('SELECT MAX(id) as nbr FROM question');
    $rep = $req->fetch();
    $theMaxId = $rep['nbr'];
    
    $random = rand(0, $theMaxId);
    
    // SQL request to get a random question
    $req = $db->prepare("SELECT * FROM question WHERE id = :id");
    $req->bindParam(':id', $random, PDO::PARAM_INT);
    $req->execute();
    
    $question = $req->fetch();
    // here you are :)
    
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。