2 回答
TA贡献1796条经验 获得超4个赞
回答您的查询。下面是我的 SQL。在下面的查询中,您可以从帖子和单列(即名称)中选择所有记录。
如果您想拥有所有列,请使用 p 对其进行编辑。,C。或者只是给 *. 所以它会为你获取所有的列。希望这能回答您的疑问。如果不是,请多解释一下您的问题。
SELECT p.name,c.* FROM cats as c
INNER JOIN posts as p ON cats.id = posts.cat_id;
TA贡献1860条经验 获得超8个赞
没有办法做你直接问的事情。每个SELECT语句都是一个唯一的查询,它返回数据库驱动程序的结果,您将通过fetchAll()上面写的方式获得结果。(请注意,有其他的方法来从PHP数据库获得的值,如fetch()在描述https://www.php.net/manual/en/pdostatement.fetch.php。如果你不需要整套一个大列表中的结果,您可能会考虑使用该方法)
其他评论者说的是对的,你想做的是:
SELECT c.title
FROM cats c
INNER JOIN posts p ON c.id = p.cat_id
ORDER BY p.id DESC
这将为您提供所有cats具有关联post. 您可以通过以下方式使用它:
<?php
$sql = "see above SELECT";
$query = $db->prepare($sql);
$query->execute();
$categoryTitles = $query->fetchAll();
foreach ($categoryTitles as $title) {
echo $title['title'];
}
(请注意,该示例将向浏览器输出一大块文本,您需要将其集成到您自己的 HTML 生成代码中)
您发布的代码:
foreach($posts as $post):
<?php echo $post['title']; ?>
看起来不像完全有效的 PHP。在foreach看起来是一个外<?php ... ?>块。如果它在这些块之一内,您将嵌套 PHP 块,例如:<?php foreach($posts as $post) { <?php echo $post['title']; ?> } ?>我认为这不是有效的语法。另外你:在foreach我不确定是否有效的语法之后放了一个。您的示例代码还name从数据库中选择列,而不是title您尝试在 PHP 代码中检索的列。
有效语法的一个例子是:
<?php
// all the PDO code
?>
<!-- some HTML -->
<?php foreach ($posts as $post) { ?>
<div> some more HTML </div>
<? echo $post['title']; ?>
<?php } ?>
执行您所询问的另一种方法是将您的 SQL 代码转换为存储过程,但这对于您当前的用例来说可能太复杂了。
- 2 回答
- 0 关注
- 212 浏览
添加回答
举报