我创建了一个注册程序,它将用户名密码插入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. "
?>
答案 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
可能会返回FALSE
,mysql_fetch
和朋友不可能} em>将其作为参数。