php
  • mysqli
  • cron
  • 2016-07-29 85 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,它爲你工作?如果真的如此,我想你可能會將我的答案標記爲勝利者 –

    相關問題