mySQL查询用于构建动态填充的模型

时间:2015-12-29 01:27:02

标签: mysql sql database pdo model

下面我有一些代码演示了我想要动态完成的硬编码示例。

在较高的层面上,我希望做一些像select * from view_data_$app_state这样的事情,然后动态地将那个视图表中的所有数据都放到我的胡子模板中。

我目前必须使用的代码将特定列的多行数据与视图数据分组:

 <?php

    error_reporting(E_ALL);

    class Example {
        function __construct(){
            try {
                $this->db = new PDO('mysql:host=localhost;dbname=Example', 'root','drowssap');
            } 
            catch (PDOException $e) {
                print($e->getMessage());
                die();
            }
        }
        function __destruct(){
            $this->db = null;
        }
        function string_to_array($links_string){
            return explode(",", $links_string);

        }
        function get_view_data(){
            $q = $this->db->prepare('select *, GROUP_CONCAT(`links`) as "links" from `view_data_global` ');
            $q->execute();
            $result = $q->fetchAll(PDO::FETCH_ASSOC);
            return $result;
        }
    }

    $Example = new Example();

    $result = $Example->get_view_data();

    $result[0]["links"] = $Example->string_to_array($result[0]["links"]);

    echo json_encode($result);

这给了我完美的对象 GROUP_CONCAT似乎是这样做的技巧,但是在编写查询之前我必须知道包含多行的列名。我试图找出一种方法,并希望创建一个自定义查询+代码示例,将cols与多行null null并不是空数据转换为如上所述的数组 - 但返回数据..再次像代码以上。

以下是实际数据的输出:

[{"id":"1","title":"This is the title test","links":["main","about","store"]}];

如何在每个视图表上动态复制此过程?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

您可以使用PDOStatement::fetch检索结果,fetch_style设置为PDO::FETCH_ASSOC(其他一些值也会提供相同的信息)。在这种情况下,结果集将按列名索引数组。您可以使用foreach (array_expression as $key => $value)

访问此信息

有关其他信息,请参阅documentation