我正在运行以下代码,但它给了我以下错误。我读了几篇关于SO的文章,仍然没有用。 我得到的错误是:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/xyz/public_html/13/beta/signup.php on line 49
Warning: Cannot modify header information - headers already sent by (output started at /home/xyz/public_html/13/beta/signup.php:49) in /home/xyz/public_html/13/beta/signup.php on line 69
我的PHP
脚本:(我已标记了行49
& 69
)
if(isset($_POST['submit'])&&$_POST['submit']=='Login')
{
$err = array();
if(!$_POST['username'] || !$_POST['pass'])
$err[] = 'All the fields must be filled in!';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['pass'] = mysql_real_escape_string($_POST['pass']);
$_POST['remember'] = (int)$_POST['remember'];
$row = mysql_fetch_assoc(mysql_query("SELECT id,user,email,clg FROM users WHERE user='{$_POST['username']}' AND pass='".md5($_POST['pass'])."'"));-->line 49
if($row['user'])
{
$_SESSION['user']=$row['user'];
$_SESSION['id'] = $row['id'];
$_SESSION['clg'] = $row['clg'];
$_SESSION['email'] = $row['email'];
$_SESSION['remember'] = $_POST['remember'];
setcookie('tcookie',$_POST['remember']);
header("Location: index.php");
exit;
}
else $err[]='Wrong username and/or password!';
}
if($err)
$_SESSION['msg']['login-err'] = implode('<br />',$err);
header("Location: signup.php");-->line 69
exit;
}
答案 0 :(得分:5)
您的mysql_query
函数返回错误,而不是结果。尝试:
$res = mysql_query("SELECT id,user,email,clg FROM users WHERE user='{$_POST['username']}' AND pass='".md5($_POST['pass'])."'");
if ($res === false) {
echo mysql_error();
die;
}
$row = mysql_fetch_assoc($res);
这将帮助您获取错误信息。
一旦错误消失,您可能会发现'标题已发送错误'也消失了,这是因为某些内容已经打印到输出中(可能是错误消息)。
更新:对于“未选择数据库”错误,您需要在使用mysql_select_db($databasename);
之前使用mysql_query()
。否则,mysql不知道您要查询哪个数据库。
此外,您可能希望研究使用PDO,这是访问MySQL数据库的另一种方式,而且它更安全,更容易使用(IMO)。
答案 1 :(得分:1)
检查你是否正确执行了mysql_connect,并在执行mysql_query之前与MySQL服务器建立了有效的连接。 顺便说一下,Fabian Tamp对PDO是正确的。另外mysqli扩展比mysql更好。它更快更稳定。
答案 2 :(得分:0)
尝试删除第69行冒号后面的espace。