gpt4 book ai didi

php - mysql_fetch_assoc 的问题

转载 作者:行者123 更新时间:2023-11-29 05:40:55 24 4
gpt4 key购买 nike

我在使用 mysql_fetch_assoc 脚本时遇到了一些问题,希望您能提供帮助。

背景:我正在使用典型的 MySQL 查询检索我网站的一部分的数据,并从我的主表中回显来自各个字段等的结果,其结构不重要但具有唯一的 ID,即“job_id”

为了让多个类别与该“job_id”相关联,我采用了 toxi 解决方案,将类别与每个“job_id”相关联。

TABLE `tags` (
`tag_id` INT NOT NULL AUTO_INCREMENT,
`tag_name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`tag_id`)
)

CREATE TABLE `tag_relational` (
`job_id` INT NOT NULL,
`tag_id` INT NOT NULL
)

当我回显主表中的信息时(使用“job_id”),我还想回显与该 job_id 匹配的所有类别,其 ID 使用:

$query = "SELECT * FROM tags t
JOIN tag_relational r
ON t.tag_id=r.tag_id
WHERE r.job_id = $job_id";

$result=mysql_query($query) or die(mysql_error());
$cats=mysql_fetch_assoc($result);

在我的代码中,我使用它来回显匹配的目录:

<p>Job Catagories | <?php while ($cats=mysql_fetch_assoc($result)) { echo $cats['tag_name'];}?></p>

我有两个问题:

  1. 上面的回显似乎完全忽略了第一个标签名称,所以如果一个工作被标记为六个类别,它只回显五个。如果一份工作只有一个标签,我什么也得不到。该查询在 SQL shell 中有效,因此我假设问题出在 PHP 中。
  2. 当我收到多个回显时,我希望能够用逗号或 | 将它们分隔开,但我不熟悉在查询中使用 group_concat,所以我也可以使用一些在那里帮忙。

最佳答案

因为在 while 循环之前已经调用了 mysql_fetch_assoc 一次,所以第一行总是被丢弃。

这应该可以解决您的问题:

$query = "SELECT * FROM tags t
JOIN tag_relational r
ON t.tag_id=r.tag_id
WHERE r.job_id = $job_id";

$result=mysql_query($query) or die(mysql_error());

<p>Job Catagories |
<?php
$first = true;
while ($cats=mysql_fetch_assoc($result)) {
if($first){
$first = false;
} else{
echo ", ";
}
echo $cats['tag_name'];
}
?>
</p>

关于php - mysql_fetch_assoc 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6903897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com