首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个查询(PHP/MySQL)中使用一个查询的结果

问如何在另一个查询(PHP/MySQL)中使用一个查询的结果
EN

Stack Overflow用户
提问于 2017-05-01 12:45:32
回答 2查看 347关注 0票数 0

我有两个表(艺术家,cd),我试图使用第一个查询的结果,该查询返回一个artID并使其与第二个表(Cd)中的artID相等,其中artID是外键,但我不知道如何做。任何帮助都将不胜感激。

代码语言:javascript
复制
$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());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-01 12:53:42

您可以使用一个查询,如下所示:

代码语言:javascript
复制
$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‘

票数 1
EN

Stack Overflow用户

发布于 2017-05-01 12:54:32

所以,第一件事是--现在你不应该在2017年使用mysql_*函数了。我的意思是,实际上,它们实际上在PHP (7.0+)的后期版本中被删除了。有关更多信息,请参考this StackOverflow post。

现在,为了你手头的问题。考虑到您已经搜索(并找到)了一个给定的artID,您首先必须从$resultsID变量中获取实际的“行”。在本例中,我们将在一个典型的while循环中这样做:

代码语言:javascript
复制
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());
}

这现在应该循环到您在第一个查询中找到的artIDs,并在随后的insert(s)中使用它们。

--

免责声明:我忽略了这样一个事实,即用户输入被直接传递到查询本身,因为这篇文章“超出了范围”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43719296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档