mysqlで質問です。MDB2を使い、selectして取得したデータからさらにqueryをかけたいと思っています。


$sql = "select thread_id from table1 where tag_name = ?";
$sth = $mdb2->prepare($sql);
$result = $sth->execute($tag_name);
$row = $result->fetchAll();
$num = $result->numRows();

$rowの結果
var_dump($row);
array(2) { [0]=> array(1) { [0]=> string(1) "5" } [1]=> array(1) { [0]=> string(1) "3" } }

この$rowの配列の中身からさらに以下を検索したいのですが詰まってしまいます。。
$sql = "select * from table2 where thread_id = ? ";
$sth2 = $mdb2->prepare($sql);

↓ここが課題
for($i=0;$i<$num;$i++){
$search_id = $row[$i][0];
$result2 = $sth2->execute($search_id);
$row = $result2->fetchRow();
}

初歩的な質問で申し訳ないのですがご教示いただけると助かります。

どうぞよろしくお願い致します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/01/20 19:03:30
  • 終了:2012/01/20 23:45:35

回答(1件)

id:oil999 No.1

oil999回答回数1728ベストアンサー獲得回数3202012/01/20 19:26:00

ポイント100pt

以下のようにしてみてください。
結果は $row2[] に入ります。

$sql = "select thread_id from table1 where tag_name = ?";
$sth = $mdb2->prepare($sql);
$result = $sth->execute($tag_name);
$row = $result->fetchAll();
$num = $result->numRows();

for ($i=0; $i<$num; $i++) {
    $search_id = $row[$i][0];
    $sql2 = "select * from table2 where thread_id = " . $search_id;
    $sth2 = $mdb2->prepare($sql2);
    $result2 = $sth2->execute($search_id);
    $row2 = $result2->fetchRow();
}
id:kuso47

ありがとうございます!助かります。

2012/01/20 23:44:49
  • id:windofjuly
    うぃんど 2012/01/20 19:23:46
    クエリ2回に分けずにクエリ1回で取得すればいいと思うのだけど、考えすぎかな?
    (今回もコメントだけで終わりそうな予感・・・)
  • id:kuso47
    いつもすみません、サブクエリを使って解決しました。
    サブクエリを使ったことがなかったためよくわからなかったのですが、調べて解決しました。

    どうぞよろしくお願いいたします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません