使用 PHP 拆分 mySQL 查询结果


Split mySQL Query Results using PHP

我正在研究一个PHP函数,该函数使用MySQL查找存储在数据库表中的学校部门列表,如果结果超过1个部门,则将结果分成两列。

我已经尝试过,而 foreach 循环,出于某种原因,我不断得到一个无休止的循环。我不确定我哪里出错了。

我的函数如下:

function translateDegreeLists($school) {
require('includes/EM-langSelect-4.php');
$values = array();
$coacs_code = 1;
$cob_code = 2;
$avcon_code = 4;
$coe_code = 3;
$cose_code = 5;
$cotm_code = 6;
$query = "SELECT dept_name, ".$content." AS content FROM explore_majors.departments WHERE school_id = ".$school."";
$result = mysql_query($query);
$nums = mysql_num_rows($result);
    if($nums == 1) {
        echo '1 Option';    
    } 
    elseif(($nums / 2) == 2) {
        echo '2 Columns with 2 Options';    
    } 
    elseif (($nums / 2) >= 3) {
        echo '2 Columns with more than 3 Options';  
    } 

echo '<div class="column column-1-2">';
    for ($i=0; $i < $nums; $i++) 
        { 
            $row = mysql_fetch_assoc($result);
            $dept_name =     $row['content'];
            echo '<h4>'.$dept_name.'</h4>';
            echo '<ul>';
                echo '<li>test</li>';
            echo '</ul>';
        }
echo '</div>';
}

注意:查询中的$content是从 EM-lang-4 中提取的.php它确定浏览器语言并在数据库中选择适当的列。

这是函数的基础,因为上面的代码在同一列div 中生成了 4 个部门的列表。

最终结果是我希望函数计算找到多少个部门,如果超过 1 个,则在 2 个div 之间平均分配它们。div 将相同,但内部内容除外。

知道我做错了什么吗?

我相信

问题是你每次都在 for 循环中运行mysql_fetch_assoc。循环的结构应如下:

while ($row = mysql_fetch_assoc($result)) {
  $dept_name =     $row['content'];
  echo '<h4>'.$dept_name.'</h4>';
  echo '<ul>';
  echo '<li>test</li>';
  echo '</ul>';
}

请注意,这不会设置列的格式,但您至少可以打印查询结果。

Php.net 是你的朋友!有关mysql_fetch_assoc,请参阅文档中的示例 1

最后,mysql_*** 函数已被弃用,最终将从未来的 php 版本中删除!请参阅文档中的红色警告