【问题标题】:PHP SQL Server : 500 Internal server error with specific queryPHP SQL Server:500 特定查询的内部服务器错误
【发布时间】:2016-08-05 22:04:25
【问题描述】:

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

此时我只有两张桌子:

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

我在 SSMS 上插入数据只是为了测试。

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

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

  1. 当我的第一个“回声”是 ID 或用户 ID 时,它返回 ONE 值,仅此而已。

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

由此我得出结论,错误出现在登录列上。

我读到“沼泽查询”可能会出现此错误(每个用户 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 中工作的查询

钛亚!

【问题讨论】:

  • “我无法访问 PHP 错误日志文件。”,然后联系可以访问的人。调试 500 错误的唯一方法是读取错误日志。
  • @Oldskool 感谢您的回复!我的大问题正是:无法访问日志文件以了解问题出在哪里。我做了一点搜索,现在我可以看到日志文件了。 '可捕获的致命错误:DateTime 类的对象无法在第 44 行的 D:\home\site\wwwroot\teste.php 中转换为字符串'

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


【解决方案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 ";

【讨论】:

  • 500 内部服务器错误...这样一个随机错误。谢谢!
  • 一旦我开始使用 PHP + MS SQL,这是安装 PDO 驱动程序后的第二个问题 :)
  • @DenisV gofr1 是对的。此外,如果您想了解更多问题所在,可以查看此链接:af-design.com/2010/03/13/…
  • @muhammedv 感谢您的宝贵回复!你也可以使用这个stackoverflow.com/questions/26470041/…
猜你喜欢
  • 1970-01-01
  • 2012-08-13
  • 2018-12-14
  • 1970-01-01
  • 2014-06-08
  • 2018-01-15
  • 2010-12-14
  • 1970-01-01
相关资源
最近更新 更多