• ベストアンサー

構文の省略について

下記をもっと省略(短い構文で)して書きたいのですが、どのようなやり方があるでしょうか。 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); ?>

質問者が選んだベストアンサー

  • ベストアンサー
  • widoww
  • ベストアンサー率20% (33/159)
回答No.2

ランダムですか? 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>; }

yes87
質問者

お礼

どうもありがとうございました。

その他の回答 (2)

  • syuuiwsd
  • ベストアンサー率56% (17/30)
回答No.3

質問よくわかりませんでしたが、 $sql = SELECT * FROM test WHERE id IN ( ${n1}, ${n2}, ${n3} )" のようにしたらどうですか?

yes87
質問者

お礼

どうもありがとうございます。 参考にさせて頂きます。

  • widoww
  • ベストアンサー率20% (33/159)
回答No.1

$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>; } でどうでしょ。

yes87
質問者

補足

どうもありがとうございます。 大切なことを書き忘れていました・・ $n1 = 1; $n2 = 2; $n3 = 3; の部分は固定ではなく $n_min = 1; $n_max = 10; $n1 = rand($n_min, $n_max); $n2 = rand($n_min, $n_max); このような感じでランダムにしようと思っています。 この場合だとどのように省略して書くことができますでしょうか?