Mysql
 sql >> Base de données >  >> RDS >> Mysql

Vérifiez si le nom d'utilisateur existe déjà avec MySQLi

Il y a des choses qui ne vont pas. N'utilisez pas mysql_real_escape_string parce que vous travaillez avec mysqli_* . Utilisez mysqli_real_escape_string Au lieu. Mais mieux vaut utiliser mysqli_stmt_bind_param parce que vous travaillez avec des instructions préparées. Et si vous travaillez avec COUNT(*) vous obtenez toujours 1 ligne.

$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];

$query = "SELECT * FROM t_people WHERE PEO_PSEUDO = ? OR PEO_MAIL = ? LIMIT 1";
$stmt = mysqli_prepare($sql, $query);
mysqli_stmt_bind_param($stmt, 'ss', $pseudo, $mail);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
$numRows = mysqli_stmt_num_rows($stmt);
mysqli_stmt_close($stmt);

Avec COUNT(*) (ce qui est plus efficace) ça donne :

$query = "SELECT COUNT(*) as numrows FROM t_people WHERE PEO_PSEUDO = ? OR PEO_MAIL = ?";
...
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $numRows);
mysqli_stmt_fetch($stmt);
mysqli_stmt_close($stmt);

// work with $numRows