- ベストアンサー
構文の省略について
下記をもっと省略(短い構文で)して書きたいのですが、どのようなやり方があるでしょうか。 testというテーブルから指定したidのnameを取り出して並べたいだけなのですが、このような長々としたものしか思い浮かびませんでした。 <?php $n1 = 1; $n2 = 2; $n3 = 3; $rs1 = mysql_query("select * from test where id = '$n1';",$conn); $rec1 = mysql_fetch_array($rs1, MYSQL_ASSOC); echo $rec1['name']; echo <br>; $rs2 = mysql_query("select * from test where id = '$n2';"); $rec2 = mysql_fetch_array($rs2, MYSQL_ASSOC); echo $rec2['name']; echo <br>; $rs3 = mysql_query("select * from test where id = '$n3';"); $rec3 = mysql_fetch_array($rs3, MYSQL_ASSOC); echo $rec3['name']; mysql_free_result($rs1); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($conn); ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ランダムですか? DB側でランダムに並び替えて3つ取り出せばいいと思いますが? $rs1 = mysql_query("select * from test ORDER BY RAND(MD5(NOW())) LIMIT 3;",$conn); while($rec = mysql_fetch_array($rs1, MYSQL_ASSOC)) { echo $rec['name']; echo <br>; }
その他の回答 (2)
- syuuiwsd
- ベストアンサー率56% (17/30)
質問よくわかりませんでしたが、 $sql = SELECT * FROM test WHERE id IN ( ${n1}, ${n2}, ${n3} )" のようにしたらどうですか?
お礼
どうもありがとうございます。 参考にさせて頂きます。
- widoww
- ベストアンサー率20% (33/159)
$n1 = 1; $n2 = 2; $n3 = 3; for($i=1;$i<4;$i++) { $rs1 = mysql_query("select * from test where id= '$i';",$conn); $rec1 = mysql_fetch_array($rs1, MYSQL_ASSOC); echo $rec1['name']; echo <br>; } mysql_free_result($rs1); とか? あるいは $rs1 = mysql_query("select * from test where id<4;",$conn); while($rec = mysql_fetch_array($rs1, MYSQL_ASSOC)) { echo $rec['name']; echo <br>; } でどうでしょ。
補足
どうもありがとうございます。 大切なことを書き忘れていました・・ $n1 = 1; $n2 = 2; $n3 = 3; の部分は固定ではなく $n_min = 1; $n_max = 10; $n1 = rand($n_min, $n_max); $n2 = rand($n_min, $n_max); このような感じでランダムにしようと思っています。 この場合だとどのように省略して書くことができますでしょうか?
お礼
どうもありがとうございました。