我在使用mysql_fetch_assoc
脚本时遇到了一些麻烦,希望你能帮忙。
背景: 我正在使用典型的MySQL查询检索我的部分网站的数据,并从我的主表中回显各种字段等的结果,其结构不重要但具有唯一ID,即'job_id'
为了让多个类别与'job_id'相关联,我使用了一个toxi解决方案,将catgories与每个'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>
我有两个问题:
group_concat
,所以我也可以在那里使用一些帮助。 答案 0 :(得分:3)
因为在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>
答案 1 :(得分:0)
在group_concat中使用SEPARATOR。见下面的例子
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;