2009-06-12 20 views
0

ランダム番号を取得しようとしています。列を配列に保存する

を使用してデータベースからのエントリを返します。データベースの列を返します。

配列のすべてのエントリを保存する場合は、どのPHP関数を使用して列を保存する必要がありますか。

答えて

2

何か?

$result = mysql_query("SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10"); 
$rows = array(); 
while ($row = mysql_fetch_row($result)) { 
    $rows[] = $row[0]; 
} 

最初の投稿とコメントに指摘されているように$ i変数を使用しないように更新されました。 PDOで

+0

ここで実際にカウンタ($ i)は必要ありません。 $ rows []に代入するだけで、配列の最後に新しい "スロット"が自動的に作成されます。 –

1

クエリを実行して結果セットを取得する方法の例を見てください。あなたは変数に結果を持っていたら

http://www.php.net/mysqli

、次の操作を行います。この線に沿って

$myarray = array(); 
while($row = mysqli_fetch_row($result)) 
    $myarray[] = $row[0]; 
1

$qryStmt = $dbc->query('SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10'); 
$a = $qryStmt->fetchAll(PDO::FETCH_COLUMN); 
+0

PDO :: FETCH_ASSOCではなくPDO :: FETCH_COLUMNが必要だと思います。 –

+1

はい、ありがとうございました。 (編集) – Galen

0

ところで:あなただけランダムで1行を取得したい場合は、これははるかに高速ESPです。大テーブルの場合:

select * from table limit 12345,1;

ここで、12345は、行のcount()から計算された単なる乱数です。

see hereこれはレール用ですが、コメントも見ています。

注意:上限値12345,2では、2番目の行はランダムではなく、ランダム行の次の行だけです。そして、注意してください:私は覚えているとき(例えば、SQLServer)rand()はmysql以外のデータベースによって最適化され、結果をランダムにしないすべての行に同じ乱数を与えます。これは、コードがデータベースに依存しない場合に重要です。

0

最後の1つ:「ランダム」と「予測するのが難しい」と混同しないでください。これは同じではありません。したがって、SQLServerの例では、select order by rand()を使用すると、2回実行すると2つの異なる結果セットが返されますが、10個のレコードを見るとdb内で互いに近くなり、つまり、ランダムではありません。

関連する問題