Im Folgenden finden Sie erprobte und bewährte Methoden, um zu überprüfen, ob eine Zeile vorhanden ist.
(Einige davon verwende ich selbst oder habe ich in der Vergangenheit verwendet).
Bearbeiten: Ich habe einen früheren Fehler in meiner Syntax gemacht, wo ich mysqli_query()
verwendet habe zweimal. Bitte konsultieren Sie die Überarbeitung(en).
D.h.:
if (!mysqli_query($con,$query))
was einfach als if (!$query)
gelesen werden sollte .
- Ich entschuldige mich dafür, dass ich diesen Fehler übersehen habe.
Nebenbemerkung: Sowohl '".$var."'
und '$var'
mach das selbe. Sie können beide verwenden, beide sind gültige Syntax.
Hier sind die beiden bearbeiteten Abfragen:
$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($con));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
und in Ihrem Fall:
$query = mysqli_query($dbl, "SELECT * FROM `tblUser` WHERE email='".$email."'");
if (!$query)
{
die('Error: ' . mysqli_error($dbl));
}
if(mysqli_num_rows($query) > 0){
echo "email already exists";
}else{
// do something
}
Sie können auch mysqli_
verwenden mit einer vorbereiteten Erklärung
Methode:
$query = "SELECT `email` FROM `tblUser` WHERE email=?";
if ($stmt = $dbl->prepare($query)){
$stmt->bind_param("s", $email);
if($stmt->execute()){
$stmt->store_result();
$email_check= "";
$stmt->bind_result($email_check);
$stmt->fetch();
if ($stmt->num_rows == 1){
echo "That Email already exists.";
exit;
}
}
}
Oder eine PDO-Methode mit einer vorbereiteten Erklärung :
<?php
$email = $_POST['email'];
$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';
try {
$conn= new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit( $e->getMessage() );
}
// assuming a named submit button
if(isset($_POST['submit']))
{
try {
$stmt = $conn->prepare('SELECT `email` FROM `tblUser` WHERE email = ?');
$stmt->bindParam(1, $_POST['email']);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
}
}
catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
if($stmt->rowCount() > 0){
echo "The record exists!";
} else {
echo "The record is non-existant.";
}
}
?>
- Vorbereitete Anweisungen eignen sich am besten zum Schutz vor einer SQL-Injection.
Hinweis:
Stellen Sie beim Umgang mit Formularen und POST-Arrays wie oben verwendet/umrissen sicher, dass die POST-Arrays Werte enthalten, dass eine POST-Methode für das Formular verwendet wird und übereinstimmende benannte Attribute für die Eingaben.
- FYI:Formulare verwenden standardmäßig eine GET-Methode, wenn sie nicht ausdrücklich angewiesen werden.
Hinweis:<input type = "text" name = "var">
- $_POST['var']
Spiel. $_POST['Var']
keine Übereinstimmung.
- Bei POST-Arrays wird zwischen Groß- und Kleinschreibung unterschieden.
Konsultieren:
Fehler beim Prüfen der Referenzen:
- http://php.net/manual/en/function. error-reporting.php
- http://php.net/manual/en/mysqli.error. php
- http://php.net/manual/en/pdo. Fehlerbehandlung.php
Bitte beachten Sie, dass sich MySQL-APIs nicht mischen, falls Sie diese Fragen und Antworten besuchen und mysql_
verwenden sich mit (und Abfragen) zu verbinden.
- Sie müssen dasselbe vom Verbinden bis zum Abfragen verwenden.
Konsultieren Sie dazu Folgendes:
Wenn Sie die Datei mysql_
verwenden API und haben keine andere Wahl, damit zu arbeiten, dann lesen Sie die folgenden Fragen und Antworten zu Stack:
Der mysql_*
Funktionen sind veraltet und werden aus zukünftigen PHP-Releases entfernt.
- Es ist an der Zeit, ins 21. Jahrhundert aufzubrechen.
Sie können auch (einer) Zeile(n) eine UNIQUE-Einschränkung hinzufügen.
Referenzen:
- http://dev.mysql. com/doc/refman/5.7/en/constraint-primary-key.html
- http://dev.mysql.com/ doc/refman/5.7/en/alter-table.html
- Wie überprüfe ich, ob ein Wert bereits vorhanden ist, um Duplikate zu vermeiden?
- So fügen Sie einen eindeutigen Schlüssel zu einer vorhandenen Tabelle hinzu (mit nicht eindeutigen Zeilen)