MySQL mysql_num_rows()函数

时间:2014-01-06 02:19:09

标签: php mysql login mysqli

我试图建立一个系统,这样如果数据库中的用户存在就不会让用户注册,这是我的代码:

$sql = mysql_query("SELECT * FROM `users` WHERE `uname` = `$uname`");
     if(mysql_num_fields($sql) > 0) {
          echo "Sorry, that user already exists.";
          exit();

我知道该功能已弃用,有人可以帮我修复我的代码吗?

3 个答案:

答案 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