如何使用MySQL PHP将两个表中的数据插入一个表中

时间:2016-02-10 13:19:33

标签: php mysql

我是新手,很抱歉有点像菜鸟。基本上我拥有的是三张桌子。一个是名为“users_FP”的用户表,其PKEY为“User_FP_ID”,下一个表为“uni_name”,PKEY为“uni_id”,最后是名为“Favorites”的联结表,其中两个表中的键相同

我正在尝试创建一个“添加到收藏夹”功能,该功能允许用户将uni添加到他们喜欢的内容中。我在PHPMyadmin中设置了所有关系。我只是在声明中遇到问题。

这是我的代码......

if ($result->num_rows > 0) {
    // output data of each row
echo "<form action='' method='post'>
<table class='table'>
<thead><tr>
<th>Name</th>
<th>Description</th>
<th>Address</th>
<th>Website</th>
<th>Favourites</th>
</tr>";
    while($row = $result->fetch_assoc()) {
       echo "<tr>";
       echo  '<td>'.$row['name'].'</td>';
       echo  '<td>'.$row['description'].'</td>';
       echo  '<td>'.$row['address'].'</td>';
       echo  "<td><a href='".$row['url']."'>Visit Site</a></td>";
       echo  '<td><input type="submit" name="submit" value="Add" class="btnAddAction"  /></td>';
       echo  "</thead></tr>";

    }
} else {
    echo "0 results";
}

if(isset($_POST['submit'])){

   $sql1 = "INSERT INTO Favorites(User_FP_ID,uni_id)
 VALUES ((SELECT User_FP_ID FROM users_FP WHERE User_FP_ID = '{$_SESSION['User_FP_ID']}'),
 (SELECT uni_id FROM uni_name WHERE uni_id=uni_id));";



if ($conn->query($sql1) === TRUE) {
    echo "New record added successfully";
} else {
    echo "Error: " . $sql1 . "<br>" . $conn->error;
}
}

任何人都可以帮助我吗?它给我错误“子查询返回超过1行”,但我不明白为什么。 Auto_increment已设置

1 个答案:

答案 0 :(得分:1)

你不能从两个选择中插入多于1个结果,但它不会匹配,所以你必须像这样加入它们:

"INSERT INTO Favorites(User_FP_ID,uni_id)
(SELECT s.User_FP_ID,t.uni_id FROM users_FP s
INNER JOIN uni_name t on t.uni_id = s.uni_id
WHERE User_FP_ID = '{$_SESSION['User_FP_ID']}');"

由于这种奇怪的情况(uni_id = uni_id),你似乎试图加入他们,但是你没有使用加入,所以请告诉我你是不是想做什么。