PHP用户注册实现用户名为 中文 如何实现?

我在写一个用PHP连接MYSQL数据库验证用户名是否被注册,当输入中文时,无论怎么写,都返回一个 “已被注册信息!”,这么一来,他肯定是不支持中文的用户名了,我就觉的奇怪了,我把验证的代码贴出来大家看看!
<?php
require ("../config/mysql_con.php");
$username=trim($_GET['username']);//获取注册名
$sqls="select * from user_info where user_name='".$username."'";
$result=mysql_query($sqls,$con);
$info=mysql_fetch_array($result);
if($info==true)
echo 0; //用户名已经存在!,不可以注册~
else
{
echo 1; //可以注册!
}
?>
其中包含的文件是这么写的
<?php

$con=mysql_connect("localhost","root","123456")
or die("数据库连接失败");
mysql_select_db("cfan",$con)
or die("数据表连接失败");
mysql_query("set names UTF8"); //设置字符集参数

?>

我在phpMyadmin 中 插入一条用户名是中文信息的记录,没有出现乱码问题,数据库的字符集编码也是UTF8的!!
请大家帮我看看
谢谢大家回答,我等下马上就要上课了,来不及改,中午改改看看,我觉的你们讲的很有道理,以前也不知道这个验证返回的是什么,现在有点底了, 还有一个问题是 2楼回答的 那个SQL语句 我一直弄不明白,我在执行 插入语句的时候
$sql="insert into user_info(user_nick,user_name,user_pwd,user_pwd2,user_que,user_ans,user_email,user_qq)values(\"$u_nick\",\"$u_name\",\"$u_pwd\",\"$u_pwd2\",\"$u_que\",\"$u_ans\",\"$u_email\",'$u_qq')";
$success=mysql_query($sql,$con)
or die("插入失败,请检查");
如果不用\这个符号,他提示错误,我解释不了,也不明白,不过有一点 是 这个类型和mysql这个字段的类型是不是要对的上的,如varchar型的 插入的时候就要是字符串?

SQL语句没有任何问题 问题就在于这里

if($info==true)
echo 0; //用户名已经存在!,不可以注册~
else

你可以这样判断
1、判断结果集条数是否大于0
$info=mysql_num_rows($result); if($info>0){echo 0;}
2、判断是否为数组
if(is_array($info)){echo 0;}
3、判断返回的结果集里的某一字段是否不为空
if(!empty($info['user_name'])){echo 0;}

另外如果字段为字符串格式 这样写 user_name = '".$username."'或者 user_name = '$username'
int 类型这样写 user_name = ".$username." 或者 user_name = $username

都是可以的 时间格式 数据库为 DATATIME或DATA 这样写 date = now()

SELECT 的时候 最好不要用 * 因为有的字段你根本不需要读取出来 会造成资源的浪费 最好用哪个字段 你就SELECT哪个字段。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-07
$sqls="select * from user_info where user_name='".$username."'"; sql语句是不是该这么写
$sqls="select * from user_info where user_name='$username'";
还有就是$info=mysql_fetch_array($result);$info返回的都是true吧,最好用$info=mysql_num_rows($result);
if($info>0)
echo 0; //用户名已经存在!,不可以注册~
else
{
echo 1; //可以注册!
}

\是转义字符符号,字符串你用的是",可能在插入的时候要转义一下",在数据库语句里,如果是字符串直接用单引号就可以了,如果是数字直接用变量就行,不用加任何的符号
$sql="insert into user_info(user_nick,user_name,user_pwd,user_pwd2,user_que,user_ans,user_email,user_qq)values('$u_nick','$u_name',\"$u_pwd\",\"$u_pwd2\",\"$u_que\",\"$u_ans\",\"$u_email\",'$u_qq')";
$success=mysql_query($sql,$con)我只改了两个,其他的自己改改吧
第2个回答  2010-04-07
if($info==true)
echo 0; //用户名已经存在!,不可以注册~
==============
这样判断可能有问题.
你print_r($info)看看,返回的是不是一条真正的纪录.
你可以这样判断
if(is_array($info)){//返回的是数组,应该查到了.
echo 0;
}
===========
也可以这样
if(mysql_num_rows($result) >0){//查询纪录条数不为0,说明查到了.
echo 0;

}
第3个回答  2015-10-29
不管是中文 或者 是 英文名 都当做字符串处理
不过一般不这么做,名字和账户都分开

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网