【发布时间】: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 内部服务器错误的用户登录列表时。
当我的第一个“回声”是 ID 或用户 ID 时,它返回 ONE 值,仅此而已。
当我的第一个“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