经过多次尝试,我终于可以显示子表中的数据。我有两个表,用户(父)和用户广告(子)。
用户
-id(主键)
-姓名
-用户名
-泰尔诺
用户广告
-id(索引)
等。。。。。。。。。
这是一对多的关系。从表用户到表用户广告。表用户假设根据与表用户中的id匹配的特定id从表useradvert中提取许多行。但是,它只显示来自useradvert的第一行。无论您如何使用不同的用户名登录,都会看到useradvert中的第一行,而不是应该显示的行。关于你的信息,我是个新手。如有任何帮助,我们将不胜感激。全面质量管理。
以下是摘录;
$query = "SELECT * FROM users,useradvert WHERE users.id=useradvert.id";
$stmt = $conn->prepare($query);
$stmt->execute();
$res = $stmt->get_result();
$row2 = $res->fetch_array();
$_SESSION['name2'] = $row2['name2'];
$_SESSION['color2'] = $row2['color2'];
$_SESSION['hobby2'] = $row2['hobby2'];
$_SESSION['radiobtn'] = $row2['radiobtn'];
$_SESSION['kupon'] = $row2['kupon'];
$_SESSION['image'] = $row2['image'];
$_SESSION['image2'] = $row2['image2'];
下面是摘录-在同一页上继续
<?php
//display record from table- useradveret -(child table)
// while($row = $res->fetch_array()){
echo $_SESSION['name2']."<br/>";
echo $_SESSION['color2']."<br/>";
echo $_SESSION['hobby2']."<br/>";
echo $_SESSION['radiobtn']."<br/>";
echo $_SESSION['kupon']."<br/>";
echo $_SESSION['image']."<br/>";
echo $_SESSION['image2']."<br/>";
// }
?>
用户广告表查询
--表
useradvert
的表结构CREATE TABLE IF NOT EXISTS `useradvert` (
`id` int(10) unsigned NOT NULL,
`name2` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`color2` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`hobby2` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`radiobtn` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`kupon` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`image` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`image2` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Dumping data for table `useradvert`
--
INSERT INTO `useradvert` (`id`, `name2`, `color2`, `hobby2`, `radiobtn`, `kupon`, `image`, `image2`) VALUES
(97, 'testthree nickname', 'colorthree', 'hobbythree', 'female', '', 'uploads/testpic1.jpg', 'uploads/testpic2.jpg'),
(99, 'testfivenamecick', 'testfivehcolor', 'testfivecolor', 'female', '', 'uploads/testpic3.jpg', 'uploads/testpic4.jpg'),
(97, 'lagitestthree', 'trheecolor', 'threehobby', 'female', '', 'uploads/testpic5.jpg', 'uploads/testpic6.jpg');
--
-- Constraints for dumped tables
--
--
-- Constraints for table `useradvert`
--
ALTER TABLE `useradvert`
ADD CONSTRAINT `useradvert_ibfk_1` FOREIGN KEY (`id`) REFERENCES `users` (`id`);
最佳答案
我猜你的sql查询不正确。使用useradvert表的id字段,但这是该表的索引字段。看起来不对。您应该在useradvert表中有一个用于联接的外键userId。然后查询应该如下所示:
SELECT * FROM users u
INNER JOIN useradvert ua ON u.id = ua.userId
然后您应该得到用户的所有useradvert字段。
这两张桌子应该是这样的:
表用户:
id | name | ...
1 | Ben | ...
2 | Markus | ...
表用户广告:
id | userid | ...
1 | 1 | ...
2 | 1 | ...
useradvert中的userid是创建两个表之间关系的外键。这有道理吗?