sql >> Databasteknik >  >> RDS >> Mysql

Kontrollera om användarnamnet redan finns med MySQLi

Vissa saker går fel. Använd inte mysql_real_escape_string eftersom du arbetar med mysqli_* . Använd mysqli_real_escape_string istället. Men bättre använd mysqli_stmt_bind_param eftersom du arbetar med förberedda uttalanden. Och om du arbetar med COUNT(*) du får alltid 1 rad.

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

Med COUNT(*) (vilket är mer effektivt) det går så här:

$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. Försöker uppdatera 640k rader i mySQL förlorar anslutningen till MySQL-servern under förfrågan

  2. Hur håller data inte sorteras?

  3. hur visar man fullständig lagrad procedurkod?

  4. Amazon RDS kan inte utföra kommandot SET GLOBAL