2014-01-19 72 views
0

檢索1個隨機行我想提出一個隨機後生成器和代碼如下所示:如何從MySQL

<?php 

$idea_generator = array(); 

    $ideas_sql = "SELECT * FROM Ideas"; 
    $query = mysql_query($ideas_sql); 



     while($row = mysql_fetch_assoc($query)) { 
       $id = $row['id']; 
       $name = $row['name']; 
       $description = $row['description']; 
       $keywords = $row['keywords']; 
       //Need to add a link function 




      array_push($idea_generator, $name); 
       sort($idea_generator); 
       $number = count($idea_generator); 
       //randomly selects idea 
       $winner = $idea_generator[rand(0, $number -1)]; 
       print strtolower($winner); 

       } 

?> 

我的問題是,這個代碼返回3項出不同的順序測試數據庫。該項目旨在從該數據庫中僅取出1個項目。我應該堅持這個PHP數組方法還是有一個更簡單的方法來實現這個目標。

+2

你不得到任何東西'phpmyadmin' ....你從'MySQL'數據庫...選擇數據'phpmyadmin'就是一個__client tool__爲了訪問MySQL數據庫,你的腳本根本不使用phpmyadmin,而是通過PHP的MySQL擴展訪問MySQL數據庫......這是一個重要的區別 –

+0

好的。我計劃通過phpmyadmin爲這個項目使用一個數據庫。無論如何,只要使用類似於此腳本的內容檢索1個項目即可。 – user3167386

+1

@ user3167386有幾種方法可以處理此問題,但首先查看與正在使用的工具相關的手冊並瞭解管理工具(** phpmyadmin **)與實際數據庫之間的區別(** mysql **)以及您正在使用的工具,即** PHP **的** MySQL Extension **。查找PDO的http://www.php.net/manual/en/book.pdo.php或http://au2.php.net/mysqli以查找當前使用的函數也會很有幫助訪問** mysql **數據通過** php ** – Aaron

回答

4

查詢更改此隨機檢索一行:

$ideas_sql = "SELECT * FROM Ideas ORDER BY RAND() LIMIT 1;"; 

由於這個查詢只返回一行,您不再需要在PHP代碼中選擇一個隨機行。您的最終代碼可能是這樣的:

$ideas_sql = "SELECT * FROM Ideas ORDER BY RAND() LIMIT 1;"; 
$query = mysql_query($ideas_sql); 

$row = mysql_fetch_assoc($query); 
// This is your 'winning' row 

$id = $row['id']; 
$name = $row['name']; 
$description = $row['description']; 
$keywords = $row['keywords']; 
+0

這看起來好像效果更好。我仍然對我應該回應的內容感到困惑。我已經嘗試了$ ideas_sql,$ query和$ row,但都沒有工作。 $ row給我一個關於數組到字符串轉換的錯誤。 $ query給我一些關於追索權的信息。 $ ideas_sql只是給我從數據庫中選擇項目的行。 – user3167386

+0

'$ row'是一個[array](http://www.php.net/manual/en/language.types.array.php),包含MySQL數據庫中的數據。我認爲你應該可以'echo''$ row ['name']'(或'$ name')。 – Jonathan

+0

完美。非常感謝你。我一直堅持這麼久,我很高興終於完成了。 – user3167386