PHP中的mysql_fetch_assoc()错误
我正在运行下面的代码,但是它给了我下面的错误。我已经读了好几篇关于这个的文章,但还是没用。 我得到的错误是:PHP中的mysql_fetch_assoc()错误,php,html,mysql,Php,Html,Mysql,我正在运行下面的代码,但是它给了我下面的错误。我已经读了好几篇关于这个的文章,但还是没用。 我得到的错误是: 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 alr
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(设置($\u POST['submit'])&&$\u POST['submit']=='Login')
{
$err=array();
如果(!$_POST['username']| |!$_POST['pass']))
$err[]=“必须填写所有字段!”;
如果(!count($err))
{
$\u POST['username']=mysql\u real\u escape\u字符串($\u POST['username']);
$\u POST['pass']=mysql\u real\u escape\u字符串($\u POST['pass']);
$_POST['memory']=(int)$_POST['memory'];
$row=mysql\U fetch\U assoc(mysql\U查询(“从用户中选择id、用户、电子邮件、clg,其中用户={$\U POST['username']}和pass=”)”).md5($\U POST['pass'])。“”);-->第49行
如果($row['user']))
{
$\会话['user']=$row['user'];
$\会话['id']=$row['id'];
$\会话['clg']=$row['clg'];
$\会话['email']=$row['email'];
$_SESSION['memory']=$_POST['memory'];
setcookie('tcookie',$_POST['memory']);
标题(“Location:index.php”);
出口
}
else$err[]=“错误的用户名和/或密码!”;
}
如果($err)
$\会话['msg']['login-err']=内爆(“
,$err”);
标题(“Location:signup.php”);-->第69行
出口
}
您的mysql\u查询
函数返回的不是结果而是错误。尝试:
$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);
这将帮助您获取错误信息
一旦该错误消失,您可能会发现“headers ready send error”也消失了,这是由于输出中已经打印了某些内容(可能是错误消息)
更新:对于“未选择数据库”错误,您需要使用
mysql\u select\u db($databasename)使用mysql\u query()
之前,请先执行code>。否则,mysql不知道要查询哪个数据库
此外,您可能希望研究使用PDO,这是访问MySQL数据库的另一种方式,而且它的堆更安全,使用更方便(IMO)。您的MySQL\u 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);
这将帮助您获取错误信息
一旦该错误消失,您可能会发现“headers ready send error”也消失了,这是由于输出中已经打印了某些内容(可能是错误消息)
更新:对于“未选择数据库”错误,您需要使用mysql\u select\u db($databasename)使用mysql\u query()
之前,请先执行code>。否则,mysql不知道要查询哪个数据库
此外,您可能希望研究使用PDO,它是访问MySQL数据库的另一种方式,而且它的堆更安全,使用起来更方便(IMO).尝试删除第69行冒号后的espace。尝试删除第69行冒号后的espace。在执行mysql\u查询之前,请检查您是否正确执行了mysql\u连接并与mysql服务器建立了有效连接。
顺便说一句,法比安·坦普对PDO的看法是正确的。而且mysqli扩展比mysql更好。它更快、更稳定。在执行mysql\u查询之前,请检查您是否正确执行了mysql\u连接,是否与mysql服务器建立了有效连接。
顺便说一句,法比安·坦普对PDO的看法是正确的。而且mysqli扩展比mysql更好。它更快更稳定。不要md5()
已经通过mysql\u real\u escape\u string()
的东西。不要md5()
已经通过mysql\u real\u escape\u string()的东西
。头名称和值之间的空格没有问题。头名称和值之间的空格没有问题。您需要添加mysql\u select\u db($databasename)
在使用mysql\u query()
之前,需要添加mysql\u select\u db($databasename)使用mysql\u query()
之前,请先执行code>。