当提交登录信息出现这样的提示:warning:mysql_fetch_array():supplied argument is not a valid mysql result resource in d:\appserv\www\registers_ok.php on line 4.
我的registers_ok.php代码是:
<?php session_start(); include_once("conn/conn.php");
$name=trim($_POST[name]);
$sql=mysql_query("select name from user where name='$name'",$conn);
$info=mysql_fetch_array($sql);
if($info!=false){
echo "<script language='javascript'>alert('对不起,该昵称已被其他用户使用!');history.back();</script>";
exit;
}
$name=trim($_POST[name]);
$pass=md5($_POST[pass]);
$email=trim($_POST[email]);
$qq=trim($_POST[qq]);
$phone=trim($_POST[phone]);
$query=mysql_query("insert into user(name,pass,email,qq,phone) values('$name','$pass','$email','$qq','$phone')",$conn);
if($query==true){
session_register("user");
$_SESSION["name"]=$name;
echo "<script>alert('注册成功!');window.location.href='zhuye.php';</script>";
}else{
echo "<script language='javascript'>alert('对不起,注册失败!');history.back();</script>";
exit;
}
?>
我的registers_ok.php代码是:
<?php session_start(); include_once("conn/conn.php");
$name=trim($_POST[name]);
$sql=mysql_query("select name from user where name='$name'",$conn);
$info=mysql_fetch_array($sql);
if($info!=false){
echo "<script language='javascript'>alert('对不起,该昵称已被其他用户使用!');history.back();</script>";
exit;
}
$name=trim($_POST[name]);
$pass=md5($_POST[pass]);
$email=trim($_POST[email]);
$qq=trim($_POST[qq]);
$phone=trim($_POST[phone]);
$query=mysql_query("insert into user(name,pass,email,qq,phone) values('$name','$pass','$email','$qq','$phone')",$conn);
if($query==true){
session_register("user");
$_SESSION["name"]=$name;
echo "<script>alert('注册成功!');window.location.href='zhuye.php';</script>";
}else{
echo "<script language='javascript'>alert('对不起,注册失败!');history.back();</script>";
exit;
}
?>
$_POST["name"] 里的name加上引号,我看下面关于取得$_POST里的值时候,也没加引号,
测试一下,看是不是这个问题
这句话有问题$sql=mysql_query("select name from user where name='".$name"'",$conn); php中双引号内的内容直接会被当成文字输出 你要输出变量,一定要移到双引号外 用.号连接
少加了个.号
要么是$sql返回为空;要么是你的SQL语句就没有正确执行;使用mysql_fetch_array()之前先判断你的$sql的记录条数,如果大于0才使用mysql_fetch_array();
echo " <script language='javascript'>alert('对不起,该昵称已被其他用户使用!');history.back(); </script>";
exit;
}
这样判断一条记录存在是不合理的,还不如直接用记录条数来判断了
先在mysql控制台试一下 。如果能执行 则说明是你程序中 sql语句有问题
也可先 echo $name 一下 看看 值是不是正确的
不会是用了SQL的关键字吧
if($info>0){
echo " <script language='javascript'>alert('对不起,该昵称已被其他用户使用!');history.back(); </script>";
exit;
}
这样应该可以,如果用mysql_fetch_array需要使用一个排列方式,如MYSQL_NUM之类的。