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

时间:2013-08-25 05:39:08

标签: 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 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 "";
}}
?>

当我运行它时,即使我输入相同的两个用户名,也没有说什么,并将它们放在一起。为什么呢?

5 个答案:

答案 0 :(得分:0)

在检查返回的行数mysql_num_rows()之前,您需要执行查询。

$result_set = mysql_query($Query2)
if(mysql_num_rows($result_set) > 0) {
    //continue
}

Sidenote:从PHP 5.5开始,不推荐使用MySQL_*。请改用MySQLi_*PDO

答案 1 :(得分:0)

您需要一个结果作为mysql_num_rows的参数。

所以,

$Query2 = mysql_query("SELECT * FROM utenti WHERE utenti='$Username'");

而不仅仅是字符串

$Query2 = "SELECT * FROM utenti WHERE utenti='$Username'";

应该修复它。

请注意,如果使用双引号,则不需要连接字符串。

另外,我强烈建议您停止使用mysql_ *函数,因为它们已被弃用并切换到mysqli_ *或PDO。见the red box。并且不要忘记始终清理用户输入(或使用预准备语句),因为否则您将接受SQL注入。

答案 2 :(得分:0)

mysql_num_rows($Query2)

之前执行查询2 像这样,

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

答案 3 :(得分:0)

你错过了

mysql_query($Query2)

之前如果条件。

您应该尝试使用PHP数据对象(PDO)连接到数据库并避免使用mysql扩展。 mysql_ functions在php 5.5.0版本中已弃用,将来会被删除。

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

答案 4 :(得分:0)

  1. 尝试从同一个表中插入和检索相同的列。您正在插入表格usenti的{​​{1}}列,但会从表格sito中检索utenti。我认为这是一个错字。
  2. 您使用utenti存储用户名,您应该使用相同的内容进行检索。
  3. 您需要执行$Escape才能执行实际查询,然后才能检查行数。
  4. 尝试以下修复:

    mysql_query($Query2)