Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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
sql声明结构如何在php中运行?_Php_Sql_Sql Server - Fatal编程技术网

sql声明结构如何在php中运行?

sql声明结构如何在php中运行?,php,sql,sql-server,Php,Sql,Sql Server,我是SQL和PHP的新手,执行SQL的方式如下: $query = 'SELECT session, id FROM AnalysePageview WHERE session="'.$sessionID.'"ORDER BY id DESC LIMIT 1'; $result = mysqli_query($link, $query); DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(

我是SQL和PHP的新手,执行SQL的方式如下:

$query  = 'SELECT session, id FROM AnalysePageview WHERE session="'.$sessionID.'"ORDER BY id DESC LIMIT 1';                 
$result = mysqli_query($link, $query);
    DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(description) 
                    from customerrewards
                    group by description, typeid
                    order by typeid
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT name,' + @cols + ' from 
             (
                select c.name,
                  cr.description,
                  r.typeid
                from customers c
                left join rewards r
                  on c.id = r.customerid
                left join customerrewards cr
                  on r.typeid = cr.typeid
            ) x
            pivot 
            (
                count(typeid)
                for description in (' + @cols + ')
            ) p '

execute(@query)
现在我在这个论坛上看到了这样的东西:

$query  = 'SELECT session, id FROM AnalysePageview WHERE session="'.$sessionID.'"ORDER BY id DESC LIMIT 1';                 
$result = mysqli_query($link, $query);
    DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(description) 
                    from customerrewards
                    group by description, typeid
                    order by typeid
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT name,' + @cols + ' from 
             (
                select c.name,
                  cr.description,
                  r.typeid
                from customers c
                left join rewards r
                  on c.id = r.customerid
                left join customerrewards cr
                  on r.typeid = cr.typeid
            ) x
            pivot 
            (
                count(typeid)
                for description in (' + @cols + ')
            ) p '

execute(@query)
如果我把它放在$query=DECLARE@cols中。。。我会得到一个错误


如何在PHP中使用此声明?

恐怕无法运行此SQL

有关更多详细信息,请参阅:

仅允许在BEGIN中声明。。。结束复合语句 而且必须在开始时,在任何其他声明之前


这是否意味着没有使用mysqli_query的pivot表?似乎MySQL中的复杂语句只能在过程/函数中使用