1

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

注册.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. "
?>
4

2 回答 2

1

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

mysql_query这是失败时返回false从而触发臭名昭著的典型案例:

mysql_num_rows() 期望参数 1 是资源

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

始终检查的返回值是否mysql_queryfalsemysql_error字符串是否为空是一个好习惯:

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

注意:永远不要混合mysql_mysqli_功能。如果您必须选择我会选择,mysqli因为mysql_*功能被认为已弃用。

于 2013-05-04T01:37:29.467 回答
0

您可以使用此查询:

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

如果他没有注册,cnt 列将返回0
因此,您可以避免需要的参数,因为如果查询没有重现结果,则可以mysql_query返回,并且无法和朋友将其作为参数。FALSEmysql_fetch

于 2013-05-04T01:40:05.550 回答