Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修复SQL和循环以自动将数据放入CGridView_Php_Sql_Sql Server_Yii - Fatal编程技术网

Php 修复SQL和循环以自动将数据放入CGridView

Php 修复SQL和循环以自动将数据放入CGridView,php,sql,sql-server,yii,Php,Sql,Sql Server,Yii,我目前正在使用SQL创建一个新的数据提供程序来填充我的cgridview 我面临的问题是,我必须直接针对用户创建的动态问题的ID,并将它们逐个添加到表单视图中 例如,我使用的SQL是 MAX(CASE WHEN uv.user_type_variables_id = 1 THEN uv.value ELSE NULL END) Question1, MAX(CASE WHEN uv.user_type_variables_id = 2 THEN uv.value ELSE NULL END) Q

我目前正在使用SQL创建一个新的数据提供程序来填充我的cgridview


我面临的问题是,我必须直接针对用户创建的动态问题的ID,并将它们逐个添加到表单视图中

例如,我使用的SQL是

MAX(CASE WHEN uv.user_type_variables_id = 1 THEN uv.value ELSE NULL END) Question1,
MAX(CASE WHEN uv.user_type_variables_id = 2 THEN uv.value ELSE NULL END) Question2,
MAX(CASE WHEN uv.user_type_variables_id = 3 THEN uv.value ELSE NULL END) Question3,
MAX(CASE WHEN uv.user_type_variables_id = 4 THEN uv.value ELSE NULL END) Question4,
MAX(CASE WHEN uv.user_type_variables_id = 5 THEN uv.value ELSE NULL END) Question5,
MAX(CASE WHEN uv.user_type_variables_id = 6 THEN uv.value ELSE NULL END) Question6
我必须把每一个都放在视图中

 array(
            'header' => 'Question1',
            'name' => 'uv.user_type_variables_id',
            'type' => 'raw',
            'value' => '$data[\'Question1\']',
        ),
        array(
            'header' => 'Question2',
            'name' => 'uv.user_type_variables_id',
            'type' => 'raw',
            'value' => '$data[\'Question2\']',
        ),
当然,当我不知道ID并且不能在每次用户添加字段时以编程方式更改视图时,这就行不通了

我如何像上面那样针对SQL,然后动态循环并放入gridview,而不必手动放入字段

我只是假设有可能以这种方式定位它,我想不出任何其他方法来定位每个单独的ID并命名它,这样我就可以在不声明ID的情况下将其放入网格中尝试以下方法:

  SELECT user_type_variables_id, 
         max(value), 
         row_number() over (order by user_type_variables_id) as n
    FROM uv
 --WHERE uv.user_type_variables_id BETWEEN 1 AND 6
GROUP BY user_type_variables_id

我遇到的问题是,我需要命名每个问题并将其分配给问题1等等。您可以通过一个查询来完成此操作,并返回ROW_NUMBER(),将其用作查询的名称并在循环中填充数组,或在循环中查询“for(;)”,首先询问uv.user_type_变量的计数(1)