【问题标题】:Split mySQL Query Results using PHP使用 PHP 拆分 mySQL 查询结果
【发布时间】:2016-03-01 20:11:00
【问题描述】:

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

我尝试过 for、while 和 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 将是相同的。

任何想法我做错了什么?

【问题讨论】:

  • 顺便说一句,您不应再使用 mysql_*** 函数,它们已被贬值。请参阅docs 中的红色警告。
  • 一些建议:开启错误报告。将你的代码分解成更小的函数。取出一些代码,直到它可以确定问题所在。记得关闭连接。

标签: php mysql function


【解决方案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中的红色警告

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多