php
  • mysqli
  • cron
  • 2016-07-29 59 views 1 likes 
    1

    我有一个SQL表后:MYTABLE,如:如何从SQL表中选择1新行,每24小时

    id  | val1 | val2 
    ----------------------------------- 
    1   a    567 
    2   zzx   7678 
    3   gtft    5435 
    

    现在,我有一个PHP页面 - magic.php,含有类似:

    $query = "SELECT * FROM mytable WHERE id='$id'"; // id keeps changing per day(i want this) 
    $result=mysqli_query($conn, $query); 
    $data = mysqli_fetch_assoc($result); 
    
    echo "Value1 is:".$data['val1']."<br/>"; 
    echo "Value2 is:".$data['val2']; 
    

    现在我想$查询挑ID = 1开始&然后一张ID​​,每24小时后。 当行完成时,它将循环回到重新启动。

    我尝试了很多东西:sleep(),for/while-loops,输出缓冲延迟& CRON JOBS。 但还没有成功。任何猜测,如何完全实现这一点?预先感谢您的宝贵时间。

    +2

    克朗的作业是你的朋友 –

    +2

    尝试有您插入哪一行的程序是另一个表,而不是存储“状态“在循环或cron作业本身。 –

    +0

    “mytable”中的值是否改变很多? –

    回答

    0

    这个怎么样?

    首先,我们来看看开始time()并写下来。

    $start = 1469804863; 
    

    现在,让我们发现排在该表中的号码:

    $num_rows = mysqli_result(mysql_query("SELECT COUNT(*) FROM `mytable` "),0); 
    

    现在,计算天的区别:

    $delta = (time() - $start)/86400; 
    

    现在,让我们找出我们需要的是哪一天:

    $row_number = (int)$delta % $num_rows; 
    

    就是这样!现在就选择正确的行吧!

    $row = mysqli_query("SELECT * FORM `mytable` LIMIT {$row_number}, 1"); 
    

    这样,$ ROW_NUMBER会从0开始,成长像1,2,3,4等等,直到它达到的行数,然后将再次成为0,1,2,3等上,在一个无限循环

    现在,要尽量简短:

    $num_rows = mysqli_result(mysql_query("SELECT COUNT(*) FROM `mytable` "),0); 
    $row_number = floor((time() - 1469804863)/86400) % $num_rows; 
    $row = mysqli_query("SELECT * FORM `mytable` LIMIT {$row_number}, 1"); 
    
    +0

    令人敬畏的逻辑。帽子OFF :) –

    +0

    @ luna.romania,它为你工作?如果真的如此,我想你可能会将我的答案标记为胜利者 –

    相关问题