Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie überprüfe ich, ob eine Zeile in MySQL vorhanden ist? (d. h. prüfen, ob eine E-Mail in MySQL existiert)

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:

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: