【问题标题】:PHP to display T-SQL statement using sqlsrv_queryPHP 使用 sqlsrv_query 显示 T-SQL 语句
【发布时间】:2011-04-28 13:41:52
【问题描述】:

只是想知道是否有人可以帮助我理解为什么我的代码没有输出数据。我在 Microsoft SQL Server 2008 中创建了一个 T-SQL 查询。该查询工作正常,并在 SQL 管理工作室中显示所有正确的数据。下面是数据在 SQL Server Management Studio 中的样子:

block sequence|number of ties|percent_of_q4|number of q3 ties|percent of q3 ties| quality
0 1108  11.34296 37  3.33935 1
1 1094  31.11517  66 6.032907  1
2 1109  21.633 53  4.77908 1

当我尝试使用完全相同的查询在简单的 PHP 脚本中输出数据时,没有显示任何数据。

发生这种情况是因为 sqlsrv_query 不喜欢我的查询吗? sqlsrv_fetch_array 是否不像我的查询中的“IS NOT NULL”?我已经完全没有关于尝试什么的想法了......任何人都可以就为什么这个相当简单的脚本似乎不起作用提供任何建议吗?任何回复将不胜感激!

如果有什么不清楚的地方,请告诉我。

干杯, 尼尔

PHP 脚本如下:

       <?php

        /*data base connection */



        $serverName = ".\SQLEXPRESS";

        $connectionOptions = array("Database"=>"V6_HOLLTS479_20101015_subset",

         "UID"=>"username",

         "PWD" => "password");



        /* Connect using Windows Authentication */       

        $conn = sqlsrv_connect($serverName, $connectionOptions);



        /* Check whether connnection is established */

        if($conn === false)

        {

            die(print_r(sqlsrv_errors(), true));

        }



        /* SQL query */

$tsql = "

DECLARE @block_size AS real



  DECLARE @threshold_1 AS real

 DECLARE @threshold_2 AS real

  DECLARE @threshold_3 AS real

 DECLARE @threshold_4 AS real







   --Set variables



    SET @block_size = 200.0



    SET @threshold_1 = 50  -- GISCat4HighThresh

    SET @threshold_2 = 75  -- GISCat3HighThresh

    SET @threshold_3 = 25  -- GISCat4LowThresh

    SET @threshold_4 = 50  -- GISCat3LowThresh



 SELECT

  sub_t.block_sequence ,

  sub_t.number_of_ties,

   tie_q_4.number_of_ties AS number_of_q4_ties,

   (CAST(tie_q_4.number_of_ties AS real)/CAST(sub_t.number_of_ties AS real))*100.0 AS percent_of_q4_ties,

       tie_q_3.number_of_ties AS number_of_q3_ties,

    (CAST(tie_q_3.number_of_ties AS real)/CAST(sub_t.number_of_ties AS real))*100.0 AS percent_of_q3_ties,



       --The next column shows the block quality.  This is currently 4,3,1 based on the threshold rules.

    CASE WHEN (

        (CAST(tie_q_4.number_of_ties AS real)/CAST(sub_t.number_of_ties AS real))*100.0 > @threshold_1

            OR

        (CAST(tie_q_3.number_of_ties AS real)/CAST(sub_t.number_of_ties AS real))*100.0 > @threshold_2

            ) THEN 4

        WHEN (

        (CAST(tie_q_4.number_of_ties AS real)/CAST(sub_t.number_of_ties AS real))*100.0 > @threshold_3

            OR

        (CAST(tie_q_3.number_of_ties AS real)/CAST(sub_t.number_of_ties AS real))*100.0 > @threshold_4

            ) THEN 3

        ELSE 1



                    END AS quality



        FROM (

        SELECT

            FLOOR(CAST(image_sequence AS real)/@block_size) AS block_sequence ,

            COUNT(image_sequence) AS number_of_ties

            FROM database

            GROUP BY 

                FLOOR(CAST(image_sequence AS real)/@block_size)

            ) AS SUB_T



        LEFT JOIN (

        SELECT FLOOR(CAST(image_sequence AS real)/@block_size) AS block_sequence ,

            COUNT(image_sequence) AS number_of_ties

            FROM database

            WHERE 

                quality = 4

            GROUP BY 

            FLOOR(CAST(image_sequence AS real)/@block_size)

        ) AS tie_q_4 ON sub_t.block_sequence = tie_q_4.block_sequence



        LEFT JOIN (

        SELECT

            FLOOR(CAST(image_sequence AS real)/@block_size) AS block_sequence ,

            COUNT(image_sequence) AS number_of_ties

            FROM  database

            WHERE 

                quality = 3

            GROUP BY 

            FLOOR(CAST(image_sequence AS real)/@block_size)

        ) AS tie_q_3 ON sub_t.block_sequence = tie_q_3.block_sequence


        WHERE sub_t.block_sequence IS NOT NULL
         ORDER BY block_sequence

";




$result = sqlsrv_query($conn, $tsql);



$row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC);

print("<pre>");

print_r($row);

print("</pre>");

【问题讨论】:

    标签: php sql-server sql-server-2008


    【解决方案1】:

    我遇到了类似的问题,我尝试了各种方法,然后又回到了基础。如果你尝试

    $query=sqlsrv_query($conn, $tsql);
    $result=sqlsrv_fetch_array($query);
    print_r($result); 
    

    应该做的伎俩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多