Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sprawdź, czy nazwa użytkownika już istnieje w MySQLi

Kilka rzeczy idzie nie tak. Nie używaj mysql_real_escape_string ponieważ pracujesz z mysqli_* . Użyj mysqli_real_escape_string zamiast. Ale lepiej użyj mysqli_stmt_bind_param ponieważ pracujesz z przygotowanymi zestawieniami. A jeśli pracujesz z COUNT(*) zawsze otrzymujesz 1 wiersz.

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

Z COUNT(*) (co jest bardziej wydajne) wygląda to tak:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. użyj IFNULL w laravel

  2. Dlaczego nie należy wyłączać ONLY_FULL_GROUP_BY?

  3. SQL:UPDATE z INNER JOIN z LIMIT

  4. MySQL do plików zewnętrznych

  5. Najlepszy sposób na przechowywanie i pobieranie synonimów w bazie danych mysql