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,所以如果找到一个,我可以在事后在另一个查询中添加它的行但仍然保留查询进行)。

现在我的虚拟数据是 4 个成员中的 3 个有数据,如果我在查询中执行 AND,则一个没有,查询停止并且不产生任何结果。好像我做 OR 我似乎只返回其中一组数据。

我想要做的是在查询构建一个数组来传递之后,看起来像

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 回答