我在当地的WAMP机器上开发了一个小型CMS。
将项目导出到托管后,出现以下问题
警告:mysql_fetch_assoc():提供的参数不是第44行/homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php中的有效MySQL结果资源
警告:无法修改标题信息 - 已在/ homepages / 36 / d288053636 / htdocs / MYWEBSITE / admin中发送的标题(输出从/homepages/36/d288053636/htdocs/MYWEBSITE/admin/index.php:44开始)第62行/index.php
第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 :(得分:3)
SQL查询未正确完成。您很可能已上载该脚本,但未上载数据库或数据库凭据错误。
提示在失败的mysql_query语句之后放入以下代码时,您可以获得非常好的描述性错误消息:
if (mysql_error()) {
die(mysql_error());
}
答案 1 :(得分:1)
第一个错误意味着您在不是MySQL资源的情况下调用mysql_fetch_assoc()
。 mysql_query
应该返回一个合适的资源,所以如果你收到这个错误,这可能意味着你的查询失败了(可能配置错误)。
由于HTTP的工作方式,在您开始编写页面正文后,无法发送HTTP标头(例如Location标头)。当第一个错误发生时,它向正文写入了一条错误消息,当您尝试发送标头以重定向用户时,会导致另一个错误。这应该消失,你已经修复了你的第一个错误。
答案 2 :(得分:0)
这意味着您的查询失败。有多种原因,包括可能是数据库连接失败或SQL查询错误。您是否尝试过调试以确定您的查询语法是否正确?
答案 3 :(得分:-1)
您的问题是,在连接之后,您的查询可能无效。
您应该在连接后记录查询以查看是否是这种情况。您还应该在调用mysql_query
之前测试mysql_fetch_assoc
返回的内容。
另一方面说明:
这是您真正的生产代码吗?如果这是一个面向公众的站点,那么这是一个严重的安全漏洞,容易受到SQL注入攻击。
如果我输入您的用户名字段,该怎么办:
1;TRUNCATE pureUser --
您的查询变为:
SELECT id,usr FROM pureUser WHERE usr=1; TRUNCATE pureUser -- AND pass=...
所以,你应该尝试过滤器php native extension:
此外,您应该尝试使用PDO,它更强大,更强大,可以使用数据库: