我试图建立一个系统,这样如果数据库中的用户存在就不会让用户注册,这是我的代码:
$sql = mysql_query("SELECT * FROM `users` WHERE `uname` = `$uname`");
if(mysql_num_fields($sql) > 0) {
echo "Sorry, that user already exists.";
exit();
我知道该功能已弃用,有人可以帮我修复我的代码吗?
答案 0 :(得分:1)
请注意,在之后从服务器获取了所有行之前,mysql_num_rows()无法返回正确的值。这在PHP ext / mysql,ext / mysqli和PDO中也是一样的。
因此,您必须遍历结果集,获取所有行,或者使用“store-result”功能在内部预取结果。
答案 1 :(得分:-1)
应该是这样的:
$db = new mysqli(here goes your connection credentials);
if($sql = $db->query("SELECT * FROM `users` WHERE `uname` = '$uname' ")) {
if($sql->num_rows > 0) {
echo "Sorry that user already exists";
}
}
这应该是一些最新的代码。
注意:
由于$uname
是进入数据库的用户输入数据,因此始终记住编码以防止SQL注入。
$uname = $db->real_escape_string($uname);
答案 2 :(得分:-1)
如果您的服务器使用的是低于PHP 5.5,那么您无需更改代码。否则你可以使用MySqli或PDO进行数据库查询,因为从PHP 5.5开始不推荐使用所有的php mysql函数。
这是mysqli中的连接器:
$mysqli = mysqli_connect("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT * FROM `users` WHERE `uname` = '$uname'");
if(mysqli_num_rows($result) > 0) {
echo "Sorry, that user already exists.";
exit();
}
它与mysql的功能没什么不同。 我肯定会使用num_rows而不是num_fields。
以下是mysqli手册的链接:http://us2.php.net/manual/en/book.mysqli.php