ランダム番号を取得しようとしています。列を配列に保存する
を使用してデータベースからのエントリを返します。データベースの列を返します。
配列のすべてのエントリを保存する場合は、どのPHP関数を使用して列を保存する必要がありますか。
ランダム番号を取得しようとしています。列を配列に保存する
を使用してデータベースからのエントリを返します。データベースの列を返します。
配列のすべてのエントリを保存する場合は、どのPHP関数を使用して列を保存する必要がありますか。
何か?
$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で
クエリを実行して結果セットを取得する方法の例を見てください。あなたは変数に結果を持っていたら
、次の操作を行います。この線に沿って
$myarray = array();
while($row = mysqli_fetch_row($result))
$myarray[] = $row[0];
:
$qryStmt = $dbc->query('SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10');
$a = $qryStmt->fetchAll(PDO::FETCH_COLUMN);
PDO :: FETCH_ASSOCではなくPDO :: FETCH_COLUMNが必要だと思います。 –
はい、ありがとうございました。 (編集) – Galen
ところで:あなただけランダムで1行を取得したい場合は、これははるかに高速ESPです。大テーブルの場合:
select * from table limit 12345,1;
ここで、12345は、行のcount()から計算された単なる乱数です。
see hereこれはレール用ですが、コメントも見ています。
注意:上限値12345,2では、2番目の行はランダムではなく、ランダム行の次の行だけです。そして、注意してください:私は覚えているとき(例えば、SQLServer)rand()はmysql以外のデータベースによって最適化され、結果をランダムにしないすべての行に同じ乱数を与えます。これは、コードがデータベースに依存しない場合に重要です。
最後の1つ:「ランダム」と「予測するのが難しい」と混同しないでください。これは同じではありません。したがって、SQLServerの例では、select order by rand()を使用すると、2回実行すると2つの異なる結果セットが返されますが、10個のレコードを見るとdb内で互いに近くなり、つまり、ランダムではありません。
ここで実際にカウンタ($ i)は必要ありません。 $ rows []に代入するだけで、配列の最後に新しい "スロット"が自動的に作成されます。 –