sql >> Database >  >> RDS >> Mysql

Controleer of de gebruikersnaam al bestaat met MySQLi

Er gaan een aantal dingen mis. Gebruik mysql_real_escape_string niet want je werkt met mysqli_* . Gebruik mysqli_real_escape_string in plaats van. Maar gebruik beter mysqli_stmt_bind_param omdat je met voorbereide verklaringen werkt. En als je werkt met COUNT(*) je krijgt altijd 1 rij.

$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);

Met COUNT(*) (wat efficiënter is) het gaat als volgt:

$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


  1. Automatisch indexbeheer in Azure SQL Database

  2. Inleiding tot het ER-gegevensmodel

  3. mysqldump-fout:Pakket groter dan max_allowed_packet'

  4. Controleer de mySQL-versie op Mac 10.8.5