Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有多个选择的SQL查询_Php_Mysql_Database_Mysqli - Fatal编程技术网

Php 具有多个选择的SQL查询

Php 具有多个选择的SQL查询,php,mysql,database,mysqli,Php,Mysql,Database,Mysqli,以下是我目前掌握的情况: //Insert a CD supplied by a particular supplier and produced by a particular producer Mysqli_query($con, "INSERT INTO CD WHERE suppliername = "Sony" AND producername = "Gold Records" (CD name, CD type, CD year) VALUES ('CDname', 'CDtyp

以下是我目前掌握的情况:

//Insert a CD supplied by a particular supplier and produced by a particular producer 
Mysqli_query($con, "INSERT INTO CD WHERE suppliername = "Sony" AND producername = "Gold Records" (CD name, CD type, CD year) 
VALUES ('CDname', 'CDtype', 'CDyear')");

//List producers information who produce CD of a particular artist released in a particular year 
mysqli_query($con, "SELECT name from producers WHERE CD artist="Yoko Kano" AND year= "1999");

或者我应该包括来自song=“Yoko Kano”的艺术家和来自song=“1999”的年份在哪里


这是正确的语法吗?我只是想再核实一下

要插入CD,您应该能够使用以下内容:

INSERT INTO cd (suppliername, producername, title, type, year) 
VALUES ('Sony', 'Gold Records', 'My CD Title', 'My CD Type', 2008)
我不会给你第二个问题的完整答案,因为我假设这是家庭作业。不过我会给你一些指导

首先,如果你想要一份制作人的名单,你需要这样做

SELECT * FROM producer
但你不想要每个制作人,你只想要1999年发行的CD制作人。你怎么能得到那些CD的列表?另一个查询:

SELECT * FROM cd WHERE year = 1999
那么你如何将这些结合起来呢?比如:

INSERT INTO cd (suppliername, producername, title, type, year) 
VALUES ('Sony', 'Gold Records', 'My CD Title', 'My CD Type', 2008)
从producer、cd中选择*其中cd.producername=producer.name和 cd.year=1999年

您需要的查询更复杂,您需要包括艺术家是小野洋子,但艺术家不在Cd表中,而是在歌曲表中。这意味着您需要另一个与歌曲表的连接。给你另一个线索,考虑这个问题,我如何看待一个特定艺术家发布的所有CD?如果您想查看特定艺术家的所有歌曲,这很简单:

SELECT * FROM Song WHERE artist = 'Yoko Ono'
CD呢?你可以做:

SELECT * FROM Cd, Song WHERE Song.CdTitle = Cd.Title

您的最终查询将需要从所有三个表中进行选择,并且需要所有约束都到位。

否。此语法错误。
INSERT INTO WHERE…
语法不正确。您希望它做什么?您需要学习如何使用在查询中正确插入数据。你在这里的简短例子是一堆错误引用甚至没有引用的值。你还需要检查你的引用。您需要在双引号内转义双引号(或使用单引号)。PHP代码和SQL代码都没有使用正确的语法。但是Stack Overflow不是拼写检查器。非常感谢!关于加入多个查询,您有什么建议吗?谢谢不客气。这里有一个关于SQL的非常好的教程,它涵盖了加入任何其他主题。它是这样的:$SQL=“SELECT*FROM producer,cd where cd.producername=producer.name和cd.year=year{从歌曲T2中选择艺术家内部加入T2.cd=T1.cd;}”$data=mysqli_查询($sql);虽然($row=mysqli_fetch_array($data)){print_r($row);}出于好奇,我更新了我的回答,为您提供了更多信息。我回顾了这一点,并思考了一些问题:对于第一个问题,我写了“$sql=”INSERT-INTO-cd”(供应商名称、供应商地址、生产商名称、生产商地址、cd标题、cd类型、cd年份)值(“$邮政[供应名称]、“$邮政[供应地址]、“$邮政[生产名称]、“$邮政[生产地址]、“$邮政[生产地址]、“$邮政[cd标题]、“$邮政[光盘年份]、”);”但是,具体来说,我在创建表Cd时意识到,表Cd只有3个属性,不包括供应商或生产商的属性。您上面的操作可能不正确?