在PHP / MySQL中获取具有实际列名的列号

时间:2013-11-25 17:28:27

标签: php mysql

这是我的问题:

$query = "SELECT last_name, first_name, DOB, site, COUNT(*) AS Num FROM student "
    . "WHERE site = '{$siteRow['site']}' "
    . "GROUP BY last_name, first_name, DOB having Num > 1";

当我在MySQL客户端上运行它时,我得到了相应的行。 last_namefirst_nameDOBsiteNum

但是,当我尝试执行此操作(并使用var_dump进行测试)至php时,我会得到相同的五个字母;但在每个字母之前,我得到01234 - 每个都与上面列出的5列相对应。

以下是php

$result = $DB->query($query);
$cnt = $DB->count($result);
if ($cnt > 0) {
            while ($row = $DB->fetch_array($result)) { // solved; issue here!
                    if (!in_array(strtolower(trim($row['site'])), $dup_student_sites)) {
                    $records[] = $row;  
                    $dup_student_sites[] = strtolower(trim($row['site']));
                    $dupCount++;
                }

            }
        }


var_dump($records);  // tested here to see result with row numbers

这是var_dump(部分)的输出:

array(111) {
  [0] =>
  array(10) {
    [0] =>
    string(7) "---"
    's_s_last_name' =>
    string(7) "---"
    [1] =>
    string(4) "---"
    's_s_first_name' =>
    string(4) "---"
    [2] =>
    string(10) "2003-03-20"
    's_s_DOB' =>
    string(10) "2003-03-20"
    [3] =>
    string(8) "---"
    's_s_site' =>
    string(8) "---"
    [4] =>
    string(1) "2"
    'Num' =>
    string(1) "2"
  }

1 个答案:

答案 0 :(得分:3)

我通常不会给出如此淡化的答案,但是:

可能的问题是$DB->fetch_array

可能的解决方案是将其更改为$DB->fetch_assoc

<强>解释

与此答案相同:

https://stackoverflow.com/a/9540590/2191572