使用PHP拆分mySQL查询结果

时间:2016-03-01 20:11:00

标签: php mysql function

我正在开发一个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将是相同的。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为问题是你每次都在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是你的朋友!请参阅documentation for mysql_fetch_assoc

中的示例一

最后,mysql _ ***函数已被弃用,最终将从未来的php版本中删除!请参阅docs

中的红色警告