2012-07-28 76 views
0

我有一个php脚本,显示500 Internal Server Error如果ff行在查询中。PHP 500内部服务器由于SQL查询而导致的错误

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 

经过甚至试图使一个脚本,应该错误的日志。我看到了该脚本的错误。但不适用于此脚本。它没有记录一个错误。

+3

规格化该表格是否更有意义,因此您不必对每个查询执行所有可怕的操作? – 2012-07-28 20:50:56

+1

查看错误日志中的实际错误。这是MS SQL吗?使用代码中的'mssql_get_last_message()'也可以看到错误 – 2012-07-28 20:51:22

+0

正常化不会出现问题。不能改变设计。 – nambla 2012-07-28 20:57:27

回答

1

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

其实,我觉得根本原因可能是HTTP 404:未找到文件:

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

相反,我认为:

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

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

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

问:你是肯定你打电话给正确的服务器端文件和目录吗?

PS: 我不知道为什么w0rldart删除了他的回复。但对于调试的目的,从而实现完整的错误报告其实是一个相当不错的主意:

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

如果你有PHP CLI,尝试调试这个命令行:

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

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