Max
Max

Reputation: 45

Check the username in the database, avoid duplicates

I want to do a query to my database if there are existing users of the same name. then I want to send a "return false". but I get only one felmeddalnde right now.

Warning: mysql_num_rows () Expects Parameter 1 to be resource, boolean

function DoInsertNewUser($name, $password) {
    var_dump($name);
    var_dump("inne i databasen");
    //tar kontakt med databasen
    $DBConnection = new DBConnection();
    $DBConnection -> Connect();

    $result = mysql_query("SELECT m_username FROM user WHERE m_username ='$name'");
    $number_of_rows = mysql_num_rows($result);

    var_dump($number_of_rows);

    if ($number_of_rows  > 1) {
        var_dump('Användarnamnet finns redan');
    }
    else 
    {
        //ställer en sql-fråga.
        $sql = "INSERT INTO `user`(`m_username`,`m_password`) VALUES (?,?)";

        $stmt = $DBConnection -> prepare($sql);
        $stmt -> bind_param("ss", $name, $password);
        if ($stmt === FALSE) {

            return false;
        }

        $stmt -> execute();
        // ger resultet.
        while ($stmt -> fetch()) {
            $stmt -> close();
            return true;
        }
        $stmt -> close();
        return false;
    }
}

Upvotes: 0

Views: 160

Answers (2)

Samy Vilar
Samy Vilar

Reputation: 11130

you can just count the number of users that have that username.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Not connected : ' . mysql_error());
 }

$db_selected = mysql_select_db('db_name', $link);
if (!$db_selected) {
   die ('Can\'t use db_name : ' . mysql_error());
}
$result = mysql_query("SELECT COUNT(*) AS count FROM user WHERE m_username ='".$name."'", $link) or die(mysql_error());

$count = mysql_fetch_assoc($result)['count'];

update localhost, mysql_user, mysql_password and db_name as required.

Upvotes: 2

Udit Trivedi
Udit Trivedi

Reputation: 246

Replace

$result = mysql_query("SELECT m_username FROM user WHERE m_username ='$name'");

With

$result = mysql_query("SELECT m_username FROM user WHERE m_username ='$name'") or die(mysql_error());

Upvotes: 1

Related Questions