dポイントプレゼントキャンペーン実施中!

MySQLについての質問ですが、下記のように複数の同じような命令がある場合に、
スッキリする書き方はありますでしょうか? 


try{

require_once("db.php");

$sql="SELECT * FROM info WHERE cat = 10 ";
$stmt = $pdo->query( $sql);
$cat10 = $stmt->fetchAll();

$sql="SELECT * FROM info WHERE cat = 20 ";
$stmt = $pdo->query( $sql);
$cat20 = $stmt->fetchAll();

$sql="SELECT * FROM info WHERE cat = 30 ";
$stmt = $pdo->query( $sql);
$cat30 = $stmt->fetchAll();

}catch(PDOException $e){
die($e->getMessage());
}

A 回答 (1件)

変数を変えていく意味がよくわかりません


普通は配列でうけませんか?
とはいえあえて指示通りでやってみるとこんなかんじ?

foreach(array(10,20,30) as $val){
$sql="SELECT * FROM info WHERE cat = ? ";
$stmt = $pdo->prepare($sql);
$data=array($val);
$stmt->execute($data);
${"cat".$val} = $stmt->fetchAll();
}

まぁ外部からの値の受け渡しではないのでプレースホルダーではなく
直接変数を埋め込んでもいいかもしれませんが

$sql="SELECT * FROM info WHERE cat = $val ";
    • good
    • 0
この回答へのお礼

ありがとうございます。特にforeachの使い方がとても参考になりました。
foreachの中に、array(10,20,30)のように書いたことがなかったので新たな発見です。 それと ${"cat".$val} のような{}に閉じる書き方はこれまであまり、使っていなかったので、とても参考になります。

お礼日時:2016/05/25 02:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!