sql >> Databáze >  >> RDS >> Mysql

Zkontrolujte, zda uživatelské jméno již v MySQLi existuje

Některé věci se pokazí. Nepoužívejte mysql_real_escape_string protože pracujete s mysqli_* . Použijte mysqli_real_escape_string namísto. Ale raději použijte mysqli_stmt_bind_param protože pracujete s připravenými výpisy. A pokud pracujete s COUNT(*) vždy dostanete 1 řádek.

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

Pomocí COUNT(*) (což je efektivnější) vypadá to takto:

$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. Vyberte vše, kde pole obsahuje řetězec oddělený čárkou

  2. CakePHP převádí celá čísla MySQL na řetězce... kazí funkci rand().

  3. MySQL Workbench:Chyba v dotazu (1064):Chyba syntaxe poblíž 'VIDIBLE' na řádku 1

  4. Jak získat záznamy mezi 2 daty v MySQL