[英]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帖子 。
現在,為您提出問題。 鑒於您已經搜索(並找到了)給定的artID
, artID
,您首先必須從$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.