2017-05-01 229 views
0

我有2個表(藝術家,CD),我試圖使用返回artID的第一個查詢的結果並使其等於artid在第二張表(cd)中artID是外鍵,但我不知道如何去做。任何幫助,將不勝感激。如何在另一個查詢(PHP/MySQL)中使用一個查詢的結果

$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()); 
+0

** MySQL的PHP​​擴展已經死了** - 停止使用['mysql' PHP擴展](http://php.net/manual/en/function.mysql-connect.php)。這是舊的,從PHP 5.5開始不推薦使用,並且在PHP 7.0中完全刪除。使用['mysqli'](http://php.net/manual/en/book.mysqli.php)或['PDO_mysql'](http://php.net/manual/en/ref.pdo-mysql。而不是。 – axiac

+0

感謝您的支持,但我知道mysql_query已被棄用。 – loxi95

+0

'$ resultID'返回什麼? –

回答

1

您可以使用一個單一的查詢,例如:

$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'] . "') 
"; 

此外,谷歌「SQL注入攻擊」你繼續

0

所以之前,第一件事情的第一個 - 你不應該使用mysql_*功能現在在2017年。我的意思是,真的 - 他們實際上甚至在更高版本的PHP(7.0+)中被刪除。有關更多信息,請參閱this StackOverflow post

現在,您的問題在手邊。鑑於您搜索(並找到)給定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()); 
} 

應該現在遍歷你已經在你的第一個查詢發現,並在隨後的INSERT(S)使用它們的artID秒。

-

免責聲明:我忽略的事實,用戶輸入被直接傳遞到查詢本身,因爲它只是太多「超出範圍」爲這個職位。

相關問題