Ich versuche, meinen Code in msqli-vorbereitete Anweisungen von mysql zu ändern. Ich bin mir nicht sicher, wie ich meinen Code anpassen soll, der derzeit funktioniert, um zu überprüfen, ob bereits eine E-Mail in der Datenbank vorhanden ist. Unten ist der Code, den ich derzeit verwende, der funktioniert. Wie ändere ich dies 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?
}
Sollte ungefähr so sein:
// 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 kann Ihnen auch helfen:
http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
Willkommen auf SO. Ich habe Ihren Beitrag nach bestem Wissen und Gewissen neu formatiert. Lesen Sie unbedingt die FAQ, um sich an das Markieren zu gewöhnen. Es fehlt ein Code, den Sie wahrscheinlich posten wollten.
– pmr
23. Februar 2012 um 0:31 Uhr