2016-12-10 43 views
-1

我想要做的是: 我有一個名爲Stations的表,它有100列。我想從工作站中選擇所有記錄並隨機選擇1條記錄並回顯隨機記錄。回聲mysql查詢使用PHP

這是我到目前爲止有:

<?PHP 

$connect = mysql_connect("***", "****", "****") or die("Connection Failed"); 
mysql_select_db("***"); 
$query = mysql_query("SELECT * FROM Stations ORDER BY RAND() LIMIT 1"); 

WHILE($rows = mysql_fetch_array($query)): 

$Station = $rows['Station1'];///seems it will only show Station1 Column I have Station1 to Station100 was not sure how to add rest of Stations 

endwhile; 
?> 
+0

很酷,現在你的問題是什麼?移動到PDO,**停止使用'mysql_ *',它被棄用和不安全!** –

回答

1

既然你限制結果集只有一排,你不需要while()循環。單從結果集讀取該行並隨後使用它,像這樣:

$rows = mysql_fetch_array($query); 

現在到了你的問題,

...它只會顯示STATION1一列,我要STATION1被Station100不知道怎麼加的站

休息要顯示所有百個值,最好使用for循環這樣,

for($i = 1; $i <= 100; ++$i){ 
    // display $rows['Station' . $i] as per your choice. Below is one way. 
    echo $rows['Station' . $i] . '<br />'; 
} 

更新:

從您的評論,

...我需要它來隨機選擇1個值的所有100列和回聲該值,請

後從結果集中提取行,使用array_rand()函數從數組中獲取一個隨機密鑰,然後使用該密鑰顯示列值,如下所示:

$randKey = array_rand($rows); 
echo $rows[$randKey]; 

旁註:不要使用mysql_*功能,它們被棄用的PHP 5.5,並且在PHP 7.0完全刪除。改爲使用mysqliPDO擴展名。另請閱讀,why shouldn't I use mysql_* functions in PHP?

+0

感謝大家的幫助,Rajdeep我已經使用了上面的代碼,它顯示了我所有的列數據。我需要它做的是我的所有列都有一行,其中有一個名稱。我需要它從所有100列中隨機選擇1個值,並回顯該值,請 – user3015877

+0

@ user3015877我已更新我的答案,請參閱我的答案的**更新**部分。 –

+0

Rajdeep,謝謝你的幫助,這個技巧,非常感謝。 – user3015877

0

mysql_query - 此擴展在PHP 5.5.0中被棄用,並且在PHP 7.0.0中被刪除。

儘量避免可能,因爲將來您可能會遇到困難。

$Station = $rows['Station1'];///seems it will only show Station1 Column I have Station1 to Station100 was not sure how to add rest of Stations 

我只是想補充你爲什麼會這樣的原因。

您一直在選擇$rows['Station1'];,這意味着您只能從數據庫中選擇僅列Station1。要獲得其他列,您需要一個不同的索引。例如,要獲得第二列,您需要編寫$rows['Station2'];。解決方案如何獲得所有列而無需手動編寫已由Rajdeep Paul提供。