1

必要なパラメーターごとにクエリを実行し、パラメーターごとに結果を取得できるクエリを作成する方法を考えています。AND/OR の組み合わせを試しましたが、期待どおりの結果が得られませんでした。

私がやりたいクエリの基本は、

select fb_wall, fb_checkin, phone 
from member_prefs where 
memeberid = 21 
OR memeberid = 22 
OR memeberid = 23 
OR memeberid = 24

キャッチは、メンバーIDの1つにデータがない場合は無視してクエリを続行する必要がある(またはIDをキャッチする必要があるため、IDが見つかった場合は、事後に別のクエリに行を追加できますが、クエリが進行中)。

現在、私のダミー データは 4 つの memberid のうち 3 つがデータを持っていますが、クエリで AND を実行するとクエリが停止し、結果が得られません。ORを実行した場合、そこにあるデータセットの1つだけを返しているようです。

私がやりたいのは、クエリが次のように渡す配列を作成した後です。

array(
   [0] array("memberid"=>21, "fb_wall"=>0, "fb_checkin"=>1, "phone"=>0),
   [1] array("memberid"=>22, "fb_wall"=>1, "fb_checkin"=>0, "phone"=>1),
   [2] array("memberid"=>24, "fb_wall"=>1, "fb_checkin"=>1, "phone"=>1)
)

最初のクエリの形成に少し問題があるようです。この場合、23 を渡すことができれば、同じテーブルに対してその id で挿入コマンドを実行できます。ここにすべての必要性があります。

4

2 に答える 2

2

どうですか:

//parameter data
$members = array(
    22 => null,
    23 => null,
    24 => null,
    25 => null
);
//make a comma separated list of ids
$ids = implode(',', array_keys($members));
//generate query text
$sql = '
    select memberid, fb_wall, fb_checkin, phone 
    from   member_prefs 
    where  memberid in ('.$ids.')
';
$result = mysql_query($sql);
while ($row = mysql_fetch_row($result)) {
    $members[$row[0]] = $row;    
}
于 2012-06-30T10:27:09.487 に答える
1

関連するキーを持つ配列から始めて、行を読み取るときに要素を置き換えます。

$ares = array(21 => null, 22 => null, 23 => null, 24 => null);
于 2012-06-30T09:23:00.450 に答える