验证PHP和MYSQL中是否已经存在用户名?

验证PHP和MYSQL中是否已经存在用户名?,php,mysql,sql,Php,Mysql,Sql,我想检查数据库中是否已经存在用户名,我编写了这段代码 <?php include('connect.php'); if(isset($_POST['registrati'])) { $Username = $_POST['nickname']; $Password = md5($_POST['password']); $Escape = mysql_real_escape_string($Username); $Query2 = "SELECT * FROM utenti WHERE u

我想检查数据库中是否已经存在用户名,我编写了这段代码

<?php
include('connect.php');
if(isset($_POST['registrati'])) {

$Username = $_POST['nickname'];
$Password = md5($_POST['password']);
$Escape = mysql_real_escape_string($Username);
$Query2 = "SELECT * FROM utenti WHERE utenti='".$Username."'";
if(mysql_num_rows($Query2)>0) {
    echo "Nome utente già in uso";
}
else {
$Query = "INSERT INTO sito(usenti, password) VALUES('$Escape', '$Password')";
$Esecuzione = mysql_query($Query);
}
if(!$Esecuzione) {
    echo "Errore: ".mysql_error();
}
else { 
echo "";
}}
?>

在检查返回的行数之前,需要执行查询
mysql\u num\u rows()


旁注:
MySQL.*
从PHP5.5开始就被弃用了。改用
MySQLi.*
PDO

您需要一个结果作为mysql_num_行的参数

所以

$Query2=mysql\u query(“从utenti中选择*,其中utenti='$Username')

而不仅仅是字符串

$Query2=“从utenti中选择*,其中utenti='$Username'

你应该把它修好

请注意,如果使用双引号,则不需要对字符串进行concat


此外,我强烈建议您停止使用mysql_*函数,因为它们已被弃用,请切换到mysqli_*或PDO。看见不要忘记总是清理您的用户输入(或使用准备好的语句),否则您将接受SQL注入。

在执行mysql\u num\u rows($query2)之前执行query2。

像这样,

 $result = mysql_query("SELECT * FROM utenti WHERE utenti='".$Username."'")
    if (mysql_num_rows($result) > 0) {//code)
你错过了

mysql_query($Query2)
前if条件

您应该尝试使用PHP数据对象(PDO)连接到数据库,并避免使用mysql扩展。php 5.5.0版本中不推荐使用mysql函数,将来将删除这些函数

  • 尝试从同一个表中插入和检索相同的列。您正在插入表
    sito
    的列
    usenti
    ,但正在从表
    utinti
    中检索
    uti
    。我想这是个打字错误
  • 如果使用
    $Escape
    存储用户名,则应使用相同的方法检索
  • 您需要执行
    mysql\u查询($Query2)
    来执行实际的查询,然后才能检查行数
  • 请尝试以下修复程序:

    $Query2 = mysql_query ("SELECT * FROM sito WHERE usenti='".$Escape."'");
    if(mysql_num_rows($Query2)>0) {
       echo "Nome utente già in uso";
    }
    

    utiniti
    usenti
    是否相同?在运行mysql_num_行之前,您需要执行查询…顺便说一句,不要再使用mysql了,它已被弃用,请使用mysqli或PDO代替$Query2 not executed?输入错误,这不是问题,你把
    sito
    Uteni
    混在一起了吗?我试着按照你说的做,但问题仍然存在,他还说:mysql_num_rows()期望参数1是资源,如果你一定做错了什么。。。这必须奏效<代码>$Query2=mysql\u查询(“从utenti中选择*,其中utenti='$Username');如果(mysql_num_rows($Query2)>0){…
    仍然不起作用。在数据库中插入昵称,即使存在两次。我快发疯了。插入的昵称出了问题,SELECT语句没有返回任何行。请检查数据库。
    $Query2 = mysql_query ("SELECT * FROM sito WHERE usenti='".$Escape."'");
    if(mysql_num_rows($Query2)>0) {
       echo "Nome utente già in uso";
    }