2013-07-12 150 views
0

我有一個來自我的大學的項目。我需要建立一個網站,從數據庫中產生隨機數據。但它也需要生成一個鏈接。這樣人們可以複製該鏈接(因爲網站正在生成不同的數據,所以人們可以通過複製URL來查看他們想要的數據)。PHP代碼從鏈接數據庫中獲取隨機數據

我想使用RAND()。但是在加入stackover之後,我發現RAND()不是一個好方法。

我可以使用RAND()獲取隨機數據,但它沒有任何URL。這也是另一個問題。我之前發佈這個問題。我想我不應該使用RAND()函數。

這是我使用的是在這一刻代碼:

<!--PHP code for fetching data from database--> 
<?php 
    $con = mysql_connect("localhost","root",""); 
    if (!$con){ 
    die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db("xlsx_db", $con); 

    $result = mysql_query("SELECT * FROM sheet1 ORDER BY RAND() LIMIT 1"); 

    if (!$result) { 
    echo 'Could not run query: ' . mysql_error(); 
    exit; 
    } 

    $row = mysql_fetch_array($result); 
    echo "<b>Quote: </b>"; 
    echo $row['quote']."<br>"; 
    echo $row['by']."<br>"; 
?> 

任何人都可以請建議我該怎麼做?任何形式的幫助將非常感激。

+2

'RAND()'對於一個小型數據庫來說是完美的。 「不製作任何網址」目前還不清楚,可以從代碼示例中受益。 – ceejayoz

+0

你使用自定義的PHP或一些PHP框架? –

+0

@ceejayoz - 我認爲問題是結果需要永久鏈接,所以查詢需要重複。如果數據庫支持RNG的種子功能,那可能是一個選項。 –

回答

0

如果你想獲得一個固定鏈接,你將需要創建另一個頁面。它將獲取一個ID(或者標識您隨機選擇的數據記錄的東西)並顯示特定數據。你可以在你的隨機頁面鏈接到這個。

0

查找數據庫中的隨機行。 獲取該行的ID。 連接帶有ID的URL。 該URL應該指向一個頁面,該頁面將使用表中提供的id提取該行。

1

不知道這實際上是你所需要的,但是:

<?php 
$rand = true; 
if (isset($_GET['id'])) { 
    if (is_int($_GET['id'])) { 
     $id = (int) $_GET['id']; 
     $q = 'SELECT * FROM table WHERE id = ?'; 
     $stmt = mysqli_prepare($dbc, $q); 
     mysqli_stmt_bind_param($stmt, 'i', $id); 
     mysqli_stmt_execute($stmt); 
     if (mysqli_stmt_num_rows($stmt) == 1) { 
      $rand = false; 
      // display 
     } 
    } 
} 

if ($rand) { 
    $q = 'SELECT * FROM table ORDER BY RAND() LIMIT 1'; 
    // run query 
    $res = mysqli_fetch_array($r); 
    $url = 'www.example.com/index.php?id=' . $res['id']; 
} 
?> 

預處理語句不嚴格必要的,因爲我們已經確保了$_GET['id']值爲整數,但爲了完整起見; D

如果您要從多個表中選擇數據,則可以使用另一個表存儲數據組合,然後使用組合的ID生成URL,如id para儀表。

+0

+1但是如果你用mysqli提供了連接到數據庫的代碼會更好,因爲他的代碼是使用mysql並且顯示如何在代碼中有一個sql注入漏洞... – Bun

+0

@奔謝謝!將添加'mysqli'功能。但是通過輸入ID來防止注入攻擊 –

+0

@Bun非常感謝代碼。但面臨一個問題。 PHP錯誤說「無效的索引ID」。你能告訴我如何解決它嗎?我在列id中設置了mysql的索引。但仍然表現出同樣的問題。 –