PHP解析sql结果集

标签 php mysql arrays foreach

我正在尝试解析 SQL 结果集,但遇到了多个问题。

        foreach ( $rows as $key => $row ) {
            die(print(gettype( $row )));  // DIE 1
            if ( is_array( $row ) ) {
                foreach ( (array)$row as $k => $r ) {
                    die(print_r($r));     // DIE 2
                    if ( !in_array( $r['proposal'], $proposals ) ) {
                        array_push( $proposals, $r['proposal'] );
                    }
                    if ( !in_array( $r['question'], $scorequestions ) && $r['type'] == 'score' ) {
                        array_push( $scorequestions, $r['question'] );
                    }
                    if ( !in_array( $r['question'], $recommendquestions ) && $r['type'] == 'recommend' ) {
                        array_push( $recommendquestions, $r['question'] );
                    }
                }
            }
        }

我的 $rows 是:( http://i.imgur.com/YUpZvBx.png )

+----------+--------+----------+-----------+----------+---------+-----------+-------------+------+
| question | title  | campaign | type      | proposal | avg     | recommend | conditional | cnt  |
+----------+--------+----------+-----------+----------+---------+-----------+-------------+------+
|      101 | Title1 |      104 | score     |       38 |  6.6667 |         0 |           0 |    3 |
|      101 | Title2 |      104 | score     |       39 |  9.6667 |         0 |           0 |    3 |
|      101 | Title3 |      104 | score     |       40 |  8.0000 |         0 |           0 |    2 |
|      101 | Title4 |      104 | score     |       41 |  3.0000 |         0 |           1 |    2 |
|      101 | Title5 |      104 | score     |       42 |  9.0000 |         0 |           0 |    1 |
|      101 | Title6 |      104 | score     |       43 |  9.0000 |         0 |           0 |    1 |
|      101 | Title7 |      104 | score     |       44 |  7.6667 |         0 |           0 |    3 |

$rows 是一个 SQL 结果集。 DIE 1 打印告诉我 $row 是一个数组,但是 is_array() 函数认为它不是一个数组。

如果我跳过 if 循环(将其注释掉)并运行内部 foreach 循环,DIE 2 会给我:

Array ( [question] => 105 [campaign] => 104 [type] => recommend [proposal] => 42 [avg] => -1.0000 [recommend] => 1 [conditional] => 1 [cnt] => 1 [title] => Title5 [amount] => 300 [theme] => offline ) 1

但随后我在 $r['proposal'] 上收到非法字符串偏移错误。不知道我哪里错了。在发布之前,我已经通读了多个 SO 线程。

最佳答案

您直接在 $rows 上迭代,而 $rows 是一个对象,它有一个包含实际数据的 $rows 成员。因此,您应该在外循环中迭代 $rows->rows。

关于PHP解析sql结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461084/

相关文章:

javascript - 将第一个值设置为 Javascript 数组中的键

c# - 删除类数组的成员 C#

php - 从 mysql_fetch_row() 中排除结果

mysql - 如何使用 order by、group by 和 join 提高查询性能

java - org.hibernate.MappingException : No Dialect mapping for JDBC type: -1 , 内部查询失败

MYSQL 在事件调度程序中使用事务

c++ - 是否可以让字符串函数(例如 strstr )在 C++ 中从头到尾考虑一个数组?

php - 如何调用从 PHP 传递变量的 Javascript

php - 警告 : mysql_query() [function. mysql-query]:无法将结果集保存在

php - 使用 PHP 将多个文本文件导入数据库表格单元格