我有mysql数据库,包含列id,division,district,branch,scm_name和scm_address。这里条件是喜欢 - 许多scm_names的一个分支名称...并且总共有207个分支,大约有1000个scm_names
我使用以下代码通过分支机构通过组合框选项进行搜索,点击搜索按钮后,用户将被重定向到results.php页面。在这里,我想显示所有选定分支名称的scm_names。
目前,它仅显示第一行的结果。如何显示该分支的所有scm_names?
使用的代码 -
的index.php
$query="SELECT * FROM tablename group by branch order by branch ASC ";
$result = mysql_query ($query) or die ('error submitting');
$count=1;
echo "<select name='district'>";
while($drop=mysql_fetch_array($result)){
echo "<option value=$drop[id]>$count) $drop[branch] Branch From - $drop[district] District</option>";
$count++;}
echo "</select>";
使用此代码,它正确填充数据库中所有1000行的207个分支列表。
results.php
$district = $_POST['district'];
$sql = "SELECT division, district, branch, GROUP_CONCAT(scm_name SEPARATOR ', ') AS scm_name FROM tablename where id = '$district' GROUP BY branch";
$results1=mysql_query($sql);
while($row = mysql_fetch_assoc( $results1 )) {?>
Division : $row["division"]
Division : $row["district"]
Division : $row["branch"]
Division : $row["scm_name"]
Division : $row["scm_address"]
<?}?>
但它只显示一个 - 第一行作为结果。因此,一个scm_name被显示为结果。
如何在数据库中显示所有具有相同分支名称值的scm_names?
答案 0 :(得分:2)
使用id
列只会选择一行。您需要使用与分支中所有行匹配的列。
在index.php
中,使用:
echo "<option value='$drop[branch]'>$count) $drop[branch] Branch From - $drop[district] District</option>";
在results.php
中,测试该列:
$sql = "SELECT division, district, branch, GROUP_CONCAT(scm_name SEPARATOR ', ') AS scm_name
FROM tablename
where branch = '$district'";
由于您只是为单个branch
返回行,因此此处不需要GROUP BY branch
。您也不需要while
循环来显示结果,因为这只会返回一行。