2011-08-27 213 views
0

我在本地WAMP机器上开发了一个小型CMS。提供的参数不是有效的MySQL结果资源

一旦我已出口到托管我的项目,下面的问题显示出来

警告:mysql_fetch_assoc():提供的参数是不是一个有效的MySQL结果资源/主页/ 36/d288053636/htdocs目录/MYWEBSITE/admin/index.php on line 44

警告:无法修改标头信息 - 已由(在/homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php:44开始的输出)发送的标头/homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php on line 62

LINE 44:

$row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM pureUser WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'")); 

62号线:

header("Location: index.php"); 

是什么这些错误是什么意思?

+0

这有什么,与你的托管服务提供商。 – Gumbo

+0

这意味着MySQL查询不成功。 –

+0

你确定你正确连接到数据库,并且它有'pureUser'表吗? – Crack

回答

3

SQL查询未正确完成。您最有可能上传了脚本,但要么没有上传数据库,要么有错误的数据库凭据。

提示当你一个失败的mysql_query声明后,把下面的代码,你可以得到很好的描述性错误消息:

if (mysql_error()) { 
    die(mysql_error()); 
} 
+0

''Table'db380361691.pureUser'does not exist'' - 我确定db名称是正确的,并且表名是正确的。 SQL是否区分大小写? – Iladarsda

+0

表上是否存在该服务器上的表?请仔细检查。表名不区分大小写。 – ty812

+0

存在!我已经将所有变更为小型案例,并确实奏效。所以这是'区分大小写'。 – Iladarsda

1

第一个错误是指你对ISN什么叫mysql_fetch_assoc()手段是一个MySQL资源。 mysql_query应该返回一个适当的资源,所以如果你得到这个错误,这可能意味着你的查询失败(某些东西可能配置错误)。

由于HTTP的方式工作,这是不可能的发送HTTP标头(如Location头),你已经开始编写页面的主体之后。发生第一个错误时,它会向正文写入一条错误消息,当您尝试发送标题以重定向用户时会导致另一个错误。这应该消除你已经修复你的第一个错误。

0

这意味着您的查询失败。有多种原因可能导致数据库连接失败或SQL查询错误。您是否尝试过调试以确定您的查询语法是否正确?

-1

这里你的问题是,在连接之后,你的查询可能是无效的。

你应该串联后登录查询,看看是否是这种情况。您还应该测试mysql_query之前返回的内容,以致电mysql_fetch_assoc

另一个说明:

这是你的真正的生产代码?如果这是一个面向公众的网站,那么这是一个严重的安全漏洞,容易受到SQL注入攻击。

如果我把什么在你的用户名现场:

1;TRUNCATE pureUser -- 

您的查询变为:

SELECT id,usr FROM pureUser WHERE usr=1; TRUNCATE pureUser -- AND pass=... 

所以,你应该尽量过滤器PHP的原生扩展:

Data filtering

此外,你应该尝试PDO,这是更强大和强大的与数据库的工作:

PHP Data Objects

+0

这个没有回答这个问题 – Gumbo

+0

我在做'mysql_real_escape_string'之前 – Iladarsda

+1

这是正确的,也是一个重要的提示,但与问题无关。 – ty812

相关问题