4 Stimmen

Prüfen Sie mit vorbereiteten Anweisungen, ob eine E-Mail bereits in der Datenbank vorhanden ist

Ich versuche, meinen Code zu msqli vorbereitete Anweisungen von mysql zu ändern. Ich bin nicht sicher, wie ich meinen Code anpassen kann, der derzeit funktioniert, um zu prüfen, ob sich bereits eine E-Mail in der Datenbank befindet. Im Folgenden finden Sie den Code, den ich derzeit verwende und der funktioniert. Wie ändere ich diesen in eine vorbereitete Anweisung und erhalte das gleiche Ergebnis?

//if email is equal to an email already in the database, display an error message

if(mysql_num_rows(mysql_query("SELECT * FROM users WHERE email = '".mysql_real_escape_string($_POST['email'])."'")))
{
  echo "<p class='red'>Email is already registered with us</p>";
} else {
  // missing code?
}

2voto

Rachael Punkte 424

Sollte in etwa so lauten:

// enable error reporting for mysqli
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// create mysqli object
$mysqli = new mysqli(/* fill in your connection info here */);

$email = $_POST['email']; // might want to validate and sanitize this first before passing to database...

// set query
$query = "SELECT COUNT(*) FROM users WHERE email = ?";

// prepare the query, bind the variable and execute
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $email);
$stmt->execute();

// grab the result
$stmt->bind_result($numRows);
$stmt->fetch();

if ($numRows) {
    echo "<p class='red'>Email is already registered with us</p>";
} else {
    // ....
}

Dieser Link könnte Ihnen ebenfalls weiterhelfen:

http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X