2012-10-05 97 views
2

我有一個表中有6列的MySQL數據庫。這裏最終將大約100行,現在我有3php隨機mysql數據

列標題:名字,SecondName,SENTENCE1,SENTENCE2,Sentence3,Sentence4

所有表都設置爲VARCHAR

我想使用網頁上的PHP來調用每行的隨機數據,例如,混合和匹配row1 FirstName與row3 SecondName和row2 Sentence1等

我讀它是更快隨機使用PHP,但我真的無法掌握如何儘管尋找這樣做。

我可以連接到我的MySQL數據庫,並得到結果使用此代碼返回:

<?php 
    // Connect to database server 
    mysql_connect("localhost", "xxx", "yyy") or die (mysql_error()); 
    // Select database 
    mysql_select_db("zzz") or die(mysql_error()); 
    // SQL query 
    $strSQL = "SELECT * FROM Users"; 
    // Execute the query (the recordset $rs contains the result) 
    $rs = mysql_query($strSQL); 
    // Loop the recordset $rs 
    // Each row will be made into an array ($row) using mysql_fetch_array 
    while($row = mysql_fetch_array($rs)) { 
    // Write the value of the column FirstName (which is now in the array $row) 
    echo $row['FirstName'] . "<br />"; 
     } 
    // Close the database connection 
    mysql_close(); 
    ?> 

但這只是返回一列數據。我需要使用類似的網頁要返回的隨機碼:

echo $firstname . $lastname . $sentence1 . $sentence2 . $sentence3 . $sentence4; 

注意,這將是重複另外3個或4行之後過

echo $firstname_2 . $lastname_2 . $sentence1_2 . $sentence2_2 . $sentence3_2 . $sentence4_2; 

我不是太熱的數組,但如果有人能讓我開始這將是很好,謝謝。

回答

5

所有這些告訴你使用蘭特在SQL查詢沒有看過這個問題。對於那些人來說:提問者需要從行中隨機組合數據,而不是隨機行。

就是這樣。它將從數據庫中獲取所有結果並回顯完全隨機組合。我無法避免使用數組,因爲它們非常有用。

<?php 
// Connect to database server 
mysql_connect("localhost", "xxx", "yyy") or die (mysql_error()); 
// Select database 
mysql_select_db("zzz") or die(mysql_error()); 
// SQL query 
$strSQL = "SELECT * FROM Users"; 
// Execute the query (the recordset $rs contains the result) 
$rs = mysql_query($strSQL); 
// Array to hold all data 
$rows = array(); 
// Loop the recordset $rs 
// Each row will be made into an array ($row) using mysql_fetch_array 
while($row = mysql_fetch_array($rs)) { 
// add row to array. 
$rows[] = $row; 
    } 
// Close the database connection 
mysql_close(); 

// Max rand number 
$max = count($rows) - 1; 

// print out random combination of data. 
echo $rows[rand(0, $max)][0] . " " . $rows[rand(0, $max)][1] . " " . $rows[rand(0, $max)][2] . " " . $rows[rand(0, $max)][3] . " " . $rows[rand(0, $max)][4] . " " . $rows[rand(0, $max)][5]; 

?> 
+0

+1實際閱讀的問題! (並用3分鐘讓我接到帖子) – RobMasters

+0

馬太很好,謝謝。我現在唯一需要知道的是,如果以後可以在網頁php中調用它,而無需再次連接到數據庫? – Sara44

+0

是的,它可以。所有數據都存儲在$ rows變量中。 – MatthewMcGovern

1
SELECT * FROM `Users` ORDER BY RAND() LIMIT 0,1; 
+0

這不是什麼儘管問。他們想要從行中隨機組合數據字段,而不是隨機行。 – MatthewMcGovern

1

使用ORDER BY RAND()進行隨機記錄選擇。

1

拆分成兩個表, 一個用戶

用戶: ID |姓名|姓氏

句子: id | userId |一句話

在「ID /用戶標識符」加入既做一個ORDER BY RAND()可能後跟一個LIMIT 20

2

有幾種方法來獲取從數據庫中隨機數據在PHP

SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1; 

另一種方法: -

$range_result = mysql_query(" SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM `table` "); 
$range_row = mysql_fetch_object($range_result); 
$random = mt_rand($range_row->min_id , $range_row->max_id); 
$result = mysql_query(" SELECT * FROM `table` WHERE `id` >= $random LIMIT 0,1 "); 

多了一個方法: -

$offset_result = mysql_query(" SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` "); 
$offset_row = mysql_fetch_object($offset_result); 
$offset = $offset_row->offset; 
$result = mysql_query(" SELECT * FROM `table` LIMIT $offset, 1 "); 
1

嘗試實施這個,但從中獲得一個入口每列(目前14個)而不是一個小隨機數。很想有馬修·麥戈文的意見,因爲他的代碼,很適合我,但它僅叫了幾個項目...

這裏:Random Sentence Using PHP & MySQL