我正在尝试过滤一个表,根据条件选择某些行的值。第一个相当复杂的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
答案 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是您第一次查询的条件。