我是新手,很抱歉有点像菜鸟。基本上我拥有的是三张桌子。一个是名为“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已设置
答案 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),你似乎试图加入他们,但是你没有使用加入,所以请告诉我你是不是想做什么。