2017-05-01 145 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秒。

-

免责声明:我忽略的事实,用户输入被直接传递到查询本身,因为它只是太多“超出范围”为这个职位。

相关问题