繁体   English   中英

如何在查询中执行查询?

[英]how to execute a query within a query?

查询完成后,根据结果我想再做一个结果。我该怎么做?

$sql="SELECT * FROM programme";
$res=mysql_query($sql);
while($row=mysql_fetch_array($res))
{   
echo "$row[0]";
if($row[3]==1)
{
     $prgrmsql="SELECT MovieName FROM movie WHERE MovieId=".$row[1];
     $prgrmresult=mysql_query($prgrmsql);
     while($line=mysql_fetch_array($prgrmresult))
    {
          echo "$line[0]";
    }
    }
    else if($row[3]==2)
{
     $prgrmsql="SELECT SongsName FROM songs WHERE SongsId=".$row[1];
     $prgrmresult=mysql_query($prgrmsql);
     while($line=mysql_fetch_array($prgrmresult))
    {
          echo "$line[0]";
    }
    }           
}

但是“if”中的查询没有执行。

此问题已解决

要回答这个问题:

SELECT *
FROM (
    /* inner function */
   SELECT /*something*/
   FROM table
)

此外,这样做可能很昂贵,因此通常最好使用JOIN操作

/* example query */
SELECT *
FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.id

对于这个特定问题,最好简单地使用INNER JOIN如下所示:

SELECT *
FROM `programme`
INNER JOIN `movie`
ON `programme`.`/*row three*/` = 1
    AND `movie`.`MovieId` = `programme`.`/*first row*/`

我认为你对单引号和双引号有点搞砸了。 您的查询应该放在双引号中,变量应该放在单引号中。 哦,当你回声时,你不需要在数组周围加上双引号。 在这里,首先查询:

$prgrmsql = "SELECT MovieName FROM movie WHERE MovieId='$row[1]'";

第二个也是一样。 现在回声:

echo $row[0];

当然它适用于双引号,因为当出现双引号时,php 解释器会将里面的内容视为代码,但将其放入双引号中没有任何意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM