簡體   English   中英

如何在另一個查詢中使用一個查詢的結果(PHP / MySQL)

[英]How to use the result of one query in another query (PHP/MySQL)

我有2個表(artist,cd),並且我嘗試使用第一個查詢的結果,該結果返回artID並使其等於第二個表(cd)中的artID,其中artID是外鍵,但我不知道該怎么做。 任何幫助,將不勝感激。

$strqueryID="SELECT artID FROM artist WHERE artName= '" . $_POST["category"] . "' ";
$resultsID=mysql_query ($strqueryID) or die(mysql_error());

$strqueryCD="INSERT INTO cd SET cdTitle='" . $_POST['title'] . "', artID='" . ??? . "' cdPrice='" . $_POST['price'] . "', cdGenre='" . $_POST['genre'] . "', cdNumTracks='" . $_POST['tracks'] . "'";
$resultsCD=mysql_query ($strqueryCD) or die(mysql_error());

您可以使用一個查詢,如下所示:

$strqueryCD="
INSERT INTO cd (cdTitle, artID, cdPrice, cdGenre, cdNumTracks) 
VALUES(
   '" . $_POST['title'] . "', 
   (SELECT artID FROM artist WHERE artName= '" . $_POST["category"] . "'), 
   '" . $_POST['price'] . "', 
   '" . $_POST['genre'] . "', 
   '" . $_POST['tracks'] . "')
";

此外,在繼續之前,請先使用Google'sqlinjection'

因此,首先是第一件事-您現在不應該在2017年使用mysql_*函數。我的意思是,真的-實際上,它們甚至在更高版本的PHP(7.0+)中已被刪除。 有關更多信息,請參見此StackOverflow帖子

現在,為您提出問題。 鑒於您已經搜索(並找到了)給定的artIDartID ,您首先必須從$resultsID變量中獲取實際的“行”。 在此示例中,我們將在典型的while循環中進行操作:

while ($row = mysql_fetch_assoc($resultsID)) {
    $strqueryCD="INSERT INTO cd SET cdTitle='" . $_POST['title'] . "', artID='" . $row['artID'] . "' cdPrice='" . $_POST['price'] . "', cdGenre='" . $_POST['genre'] . "', cdNumTracks='" . $_POST['tracks'] . "'";
    $resultsCD=mysql_query ($strqueryCD) or die(mysql_error());
}

現在,這應該會循環您在第一個查詢中找到的artID ,並在后續插入中使用它們。

-

免責聲明:我忽略了用戶輸入直接傳遞到查詢本身的事實,因為這篇文章太“超出范圍”了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM