PHP SQL Server:500具有特定查询的内部服务器错误

时间:2016-04-14 11:24:04

标签: php sql sql-server azure azure-sql-database

我正在使用PHP版本5.4.45,我的网站和Microsoft Azure上托管的SQL Server数据库。

此刻我只有两张桌子:

  • users(ID [int PK],fname [vchar],lname [vchar]);
  • user_login(ID [int PK],userID [int],login [datetime]);

我在SSMS上插入数据仅用于测试。

在我的网站上,我运行一个查询给我一个注册用户列表,它返回所有相关信息(2行)。

当我运行查询以返回登录的用户列表时,会抛出500内部服务器错误。

  1. 当我的第一个"回声"是ID或userID,它返回一个值,仅此而已。

  2. 当我的第一个"回声"是登录(日期时间),它不显示任何内容,下一个" echo"在代码中也是如此。

  3. 有了这个,我得出结论是登录栏上的错误。

    我已经读过“bog”查询'可以做这个错误(我的每个用户ID只有30行,我的2个用户只有60行)但是,对于测试,我将查询限制为仅5条记录。

    我此时尝试的查询适用于SSMS。

    我无法访问PHP错误日志文件。

    <?php
    
        $userID = 1;
        $uid = "xxx";
        $pwd = "xxx";
        $serverName = "xxx";
        $connectionInfo = array( "Database"=>"Development", "UID"=>$uid, "PWD"=>$pwd);
        $conn = sqlsrv_connect( $serverName, $connectionInfo);
    
        if( $conn )
        {
            // echo "Connection established.\n";
        }
        else
        {
            echo "Connection could not be established.\n";
            die( print_r( sqlsrv_errors(), true));
        }
    
        $sql = "SELECT * FROM dbo.userLogin WHERE userID=1 AND ID BETWEEN 5 AND 10 ORDER BY ID ASC ";
        $stmt = sqlsrv_query( $conn, $sql);
    
        if( $stmt === false ) {
            die( print_r( sqlsrv_errors(), true));
        }
    
        while($sql = sqlsrv_fetch_array($stmt)) {
            $id         = $sql["ID"];
            $login      = $sql["login"];
            $num_row    = count($login);
    
            for ($i = 0; $i < $num_row; $i++) {
                echo "
                    <p>$id</p>
                    <p>$login</p>
                    <p>$userID</p>
                ";
            }
        }
    ?>
    

    查询在SSMS中工作

    enter image description here

    TIA!

1 个答案:

答案 0 :(得分:1)

试试这个$sql = "SELECT ID, userID, CONVERT(nvarchar(50),[Login],120) as [Login] FROM dbo.userLogin WHERE userID=1 AND ID BETWEEN 5 AND 10 ORDER BY ID ASC ";