由于SQL查询导致的PHP 500内部服务器错误


PHP 500 Internal Server Error due to a SQL query

我有一个php脚本,如果ff行在查询上,它会显示500 Internal Server Error

 CONVERT(INT,cast(reverse(substring(char_data, 301, 4)) as BINARY(4))) AS maxexperience

当我删除它时,一切都会很好。

$SQL = "SELECT TOP 10
    CONVERT(VARCHAR,substring(char_data, 9, 16)) AS name,
    CONVERT(INT,cast(reverse(substring(char_data, 7, 2)) as BINARY(2))) AS level,
    CONVERT(INT,substring(char_data, 25, 1)) AS type,
    CONVERT(INT,cast(reverse(substring(char_data, 263, 2)) as BINARY(2))) AS strength,
    CONVERT(INT,cast(reverse(substring(char_data, 265, 2)) as BINARY(2))) AS wisdom,
    CONVERT(INT,cast(reverse(substring(char_data, 267, 2)) as BINARY(2))) AS dexterity,
    CONVERT(INT,cast(reverse(substring(char_data, 269, 2)) as BINARY(2))) AS charisma,
    CONVERT(INT,cast(reverse(substring(char_data, 271, 2)) as BINARY(2))) AS intelligence,
    CONVERT(INT,cast(reverse(substring(char_data, 273, 2)) as BINARY(2))) AS constitution,
    CONVERT(INT,cast(reverse(substring(char_data, 309, 2)) as BINARY(2))) AS fame,
    CONVERT(INT,cast(reverse(substring(char_data, 301, 4)) as BINARY(4))) AS maxexperience
FROM CHAR_DATA0 WHERE CONVERT(INT, substring(char_data, 261, 1))=0x00 ORDER BY level DESC";

我试着从MSSMS-2008 运行相同的脚本

 name       level   type    strength  wisdom  dexterity  charisma   intelligence    constitution    fame    maxexperience
 ladycharm  340     4       3510      1210    5200       2001       1120            4236            14265   1782451348

它确实有效。但是从php脚本中,它给出了一个错误。请给我建议?非常感谢。

---cpanel上的错误日志---

 [Sat Jul 28 13:01:24 2012] [error] [client IP] File does not exist: /home/blazegam/public_html/test/404.shtml
 [Sat Jul 28 13:01:24 2012] [error] [client IP] File does not exist: /home/blazegam/public_html/test/favicon.ico
 [Sat Jul 28 13:00:38 2012] [error] [client IP] File does not exist: /home/blazegam/public_html/test/404.shtml
 [Sat Jul 28 13:00:38 2012] [error] [client IP] File does not exist: /home/blazegam/public_html/test/favicon.ico

检查了所有日志,甚至尝试制作一个应该出错的脚本。我看到了那个脚本的错误。但不是这个剧本。它没有记录错误。

这是一些疯狂的SQL。。。但我不认为这是你"错误500"的来源。

事实上,我认为根本原因可能是HTTP 404:找不到文件:

File does not exist: /home/blazegam/public_html/test/404.shtml

相反,我认为:

1) 客户端正在请求无效的链接

2) 服务器尝试。。。并且失败了。。。生成错误404

3) 最终,客户端收到错误500

Q: 您是否确定正在调用正确的服务器端文件和目录?

PS:我不知道w0rldart为什么删除了他的回复。但为了调试的目的,启用完整的错误报告实际上是一个非常好的主意:

error_reporting(E_ALL);
ini_set("display_errors", 1);

如果您有PHP CLI,请尝试从命令行调试:

php -l /path/to/your/php_script.php

对我来说,10次中有9次,500个状态代码来自一个小语法错误。。。您是否可以将实际的查询代码块粘贴到PHP文件中?我看到您粘贴了正在使用的查询字符串,但查看更多会有所帮助。