无法检查用户名是否存在

时间:2013-05-04 01:31:04

标签: php mysql

我创建了一个注册程序,它将用户名密码插入mysql数据库。我现在正在尝试检查用户名exixts与否。我写了以下程序。它不起作用。它显示“mysql_num_rows()期望参数1是资源。” 我真的需要你的专家建议

为registration.php

<?php 
require 'jcon.php';
if(isset($_POST["username"], $_POST["firstname"],$_POST["password"])){
    $username=$_POST["username"];
    $firstname=$_POST["firstname"];
    $password=$_POST["password"];
}
$query = mysql_query("SELECT * FROM member WHERE username='$username'");
if(mysql_num_rows($query) != 0)
{
echo "Username already exists";
}
else{
$sql="INSERT INTO member (username, firstname, password)
VALUES ('$username', '$firstname','$password')";}
if(!mysqli_query($con,$sql)){
    die('Error: ' . mysqli_error($con));
}
echo "Dear {$firstname} ! you have been successfully registered. "
?>

2 个答案:

答案 0 :(得分:1)

  

显示“mysql_num_rows()期望参数1为资源

这是mysql_query失败时返回false因此触发臭名昭着的典型案例:

  

mysql_num_rows()期望参数1为资源

这可能是由多种因素造成的。尝试在phpMyAdmin中运行查询或直接运行到数据库并查看错误或通过mysql_error获取上一个mysql错误。

最好始终检查mysql_query的返回值是false还是mysql_error字符串不为空:

if ($result and empty(mysql_error()))
    // everything ok

注意:永远不要混用mysql_mysqli_函数。如果您必须选择我使用mysqli,因为mysql_*函数被视为已弃用。

答案 1 :(得分:0)

您可以使用此查询:

SELECT COUNT(*) as cnt FROM member WHERE username = '$username'`. 

如果他没有注册,cnt专栏将返回0 因此,您可以避免使用所需的参数,因为如果查询无法重现结果,则mysql_query可能会返回FALSEmysql_fetch朋友不可能将其作为参数。