mssql回显一定的结果

时间:2016-11-04 08:25:21

标签: php sql-server echo

这是我在stackoverflow上的第一篇文章,但我多次使用该网站,所以首先我要感谢你们,感谢你们与世界分享的所有优秀答案。 在我发布之前我使用谷歌和搜索功能,但我找不到解决我的问题的答案。

目标是创建一个谷歌堆叠图,但他们需要一个非常具体的数组格式。 在大多数情况下,我设法创建一个图形,但对于这个我不能正确获取mssql查询的输出。

我通过我的查询得到的结果如下

Name       Case       Count
Company A  Incident   6
Company A  Request    28
Company A  Problem    2
Company B  Incident   1
Company B  Problem    15
Company C  Incident   60
Company C  Problem    45
Company C  Request    30
Company C  Change     24

我通过以下简单的SQL查询

实现了这个结果
SELECT top 20
        CRM_MSCRM.dbo.FilteredAccount.name,
        CRM_MSCRM.dbo.FilteredIncident.casetypecodename, 

        count(casetypecodename) as count


        FROM 
             CRM_MSCRM.dbo.FilteredIncident
        JOIN CRM_MSCRM.dbo.FilteredAccount on CRM_MSCRM.dbo.FilteredIncident.bb_accounttocaseid = CRM_MSCRM.dbo.FilteredAccount.accountid

        GROUP BY 
             casetypecodename, name

如果我在相关的PHP列表中用PHP回显这个,我得到以下结果:

Company A 6
Company A 28
Company A 2
Company B 1
Company B 15

等...

但我需要的是以下内容:

Company A 6, 28, 2
Company B 2, 1

我如何回应我的查询(或修改后的查询以实现我的图表所需的格式。

    ['Name', 'incident', 'change'],
    ['Company A', 10, 24, ],
    ['Company B', 16, 22, ],
    ['Company C', 28, 19, ]

这是我的PHP代码,只是一个测试页面来获取我的结果。将其插入图表不是问题,问题是图表需要的格式。

$sql="
            // query goes here 

                ";
 $stmt = sqlsrv_query( $conn, $sql );
 if( $stmt === false) {die( print_r( sqlsrv_errors(), true) );}
     while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) )
                    {                   
                        echo $row [name];
                        echo $row [tellen]; // but this doesnt work
                    }   

        ?>

我如何回应结果以实现我的目标?

提前致谢

1 个答案:

答案 0 :(得分:0)

首先,请注意您当前的代码:

{% block body %}
<div class="container">
    <div class="page-header">
        <h2>New Company</h2>
    </div>
    {{ form_start(form) }}
        <div class="row">
            {{ form_row(form.name) }}
            <h3>Employees</h3>
                <ul class="employees" data-prototype="{{ form_widget(form.employees.vars.prototype)|e('html_attr') }}">
                    {% for employee in form.employees %}
                        <li>
                            <div class="form-group col-sm-6">
                                {{ form_row(employee.firstName, {'attr':{'class': 'form-control'}}) }}
                            </div>
                            <div class="form-group col-sm-6">
                                {{ form_row(employee.lastName, {'attr':{'class': 'form-control'}}) }}
                            </div>

                        </li>
                    {% endfor %}
                </ul>
            <button type="submit" class="btn btn-primary">Save</button>
        </div>
    {{ form_end(form) }}
</div>
{% endblock %}

您显然没有配置PHP开发框来显示所有错误消息,因此您盲目编码。我建议你研究一下,直到你能看到你应该得到的两个通知:

echo $row [name];

我还建议您查看PHP语法的基础知识,实际上与受C语法启发的其他语言没有太大区别。了解string literals(并且他们与constants不同),当然还有arrays

虽然你当然可以重写你的SQL查询以返回你需要的确切数据格式,但是当我(如果我理解正确的规范)一个简单的PHP数组将会做的时候,我不认为这是值得的。特技。

我的印象是唯一的问题是你不熟悉编程语言中数组的概念。这不是完整讲座的地方,但数组是一个值列表,其中顺序很重要,这些值可以是任何PHP变量 - 包括其他数组。最后一位是转换它的关键:

    Notice: Use of undefined constant name - assumed 'name'
    Notice: Undefined index: name

......进入这个:

Company A 6
Company A 28
Company A 2
Company B 1
Company B 15

当您在Company A 6, 28, 2 Company B 2, 1 循环中读取结果集时,您可以将值存储在二维数组中。您可以在PHP手册的Recursive and multi-dimensional arrays示例中查看语法,但在您的情况下,它可以是:

sqlsrv_fetch_array()

您可以使用以下方法检查生成的数组: var_dump()。完成后,您可以使用foreach()循环外部数组,并将每个内部数组合并为逗号分隔的字符串implode()