SELECT with array()

时间:2010-10-15 23:40:34

标签: php mysql select

我正在尝试过滤一个表,根据条件选择某些行的值。第一个相当复杂的SELECT工作得很好,让我产生了一组id。但是我想在第二个SELECT的数组中使用这个id组($ art_id)来更直接地获取行。希望有人提出建议。谢谢,艾伦。

这里没有包含第一个SELECT - 我用print $ art_id获取值; ...但只有最后一个值显示在我的图像列表SELECT中,因为我需要正确使用数组

$QUERY1="SELECT.....etc,..."   ///this works fine

$res = mysql_query($QUERY1);
   $num = mysql_num_rows($res);
   if($num>0){
   while($row = mysql_fetch_array($res)){
       $art_id = $row['art_id'];

print $art_id;
$a1 = array($art_id); ///this $a1 var didn't work in the SELECT below.
   }
}
///here is where I need to have an array var instead of just $art_id
$QUERY2="SELECT * FROM artWork WHERE art_id = '$art_id'";  

    $res = mysql_query($QUERY2);
   $num = mysql_num_rows($res);
   if($num>0){

   while($row = mysql_fetch_array($res)){
       $art_title = $row['art_title'];
       $artist_name = $row['artist_name'];
       $art_id = $row['art_id'];
                 $media = $row['media'];

  echo.....etc,...../// only one image (the last, of course) shows up here

3 个答案:

答案 0 :(得分:3)

如果您愿意,可以使用查询来解决此问题:

假设您首先查询表 table1 中的 art_id ,所以:

SELECT art_id FROM table1

然后你查询它:

SELECT * FROM artWork WHERE art_id = '$art_id'

通过合并其他2个查询获得的最终查询:

SELECT * FROM artWork WHERE art_id in ( SELECT art_id FROM table1 );

答案 1 :(得分:0)

只需使用此功能即可在一个查询中执行此操作。

SELECT [...] WHERE `art_id` IN (SELECT `art_id` [...])

如果您在两个查询中从同一个表中选择,这是多余的。

如果要测试PHP数组中的值,则应使用IN,如下所示:

$values = array(1,2,3);
'WHERE `art_id` IN ('.implode(',', $values).')'

答案 2 :(得分:0)

使用联接,它非常简单,速度更快。

SELECT aw.* FROM table1 t
JOIN artWork aw ON aw.art_id=t.art_id
WHERE (CONDITIONS);

其中CONDITIONS是您第一次查询的条件。