簡體   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