sql >> Database >  >> RDS >> Mysql

Hoe controleer ik of een rij bestaat in MySQL? (d.w.z. controleren of er een e-mail bestaat in MySQL)

De volgende zijn beproefde, geteste en bewezen methoden om te controleren of een rij bestaat.

(Sommige daarvan gebruik ik zelf, of heb ik in het verleden gebruikt).

Bewerken: Ik heb een eerdere fout gemaakt in mijn syntaxis waarbij ik mysqli_query() . gebruikte tweemaal. Raadpleeg de revisie(s).

D.w.z.:

if (!mysqli_query($con,$query)) die gewoon had moeten lezen als if (!$query) .

  • Mijn excuses dat ik die fout over het hoofd heb gezien.

Kanttekening: Beide '".$var."' en '$var' hetzelfde doen. U kunt een van beide gebruiken, beide zijn geldige syntaxis.

Dit zijn de twee bewerkte zoekopdrachten:

$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

}

en in jouw geval:

$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

}

Je kunt ook mysqli_ gebruiken met een voorbereide verklaring 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;

            }
        }
    }

Of een BOB-methode met een voorbereide verklaring :

<?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.";
    }


    }
?>
  • Voorbereide instructies kunnen het beste worden gebruikt om te helpen beschermen tegen een SQL-injectie.

NB:

Als je te maken hebt met formulieren en POST-arrays zoals hierboven gebruikt/beschreven, zorg er dan voor dat de POST-arrays waarden bevatten, dat een POST-methode wordt gebruikt voor het formulier en overeenkomende benoemde attributen voor de invoer.

  • Ter info:Formulieren gebruiken standaard een GET-methode als ze niet expliciet worden geïnstrueerd.

Opmerking:<input type = "text" name = "var"> - $_POST['var'] wedstrijd. $_POST['Var'] geen match.

  • POST-arrays zijn hoofdlettergevoelig.

Raadpleeg:

Fout bij het controleren van referenties:

Houd er rekening mee dat MySQL-API's niet met elkaar vermengd zijn, voor het geval u deze Q&A bezoekt en mysql_ gebruikt om verbinding mee te maken (en te bevragen).

  • Je moet dezelfde gebruiken van verbinding tot zoeken.

Raadpleeg hierover het volgende:

Als u de mysql_ . gebruikt API en geen keuze hebt om ermee te werken, raadpleeg dan de volgende Q&A op Stack:

De mysql_* functies zijn verouderd en worden verwijderd uit toekomstige PHP-releases.

  • Het is tijd om de 21e eeuw binnen te stappen.

U kunt ook een UNIEKE beperking toevoegen aan (een) rij(en).

Referenties:



  1. SQL Server - stop of verbreek de uitvoering van een SQL-script

  2. Relationele versus niet-relationele databases - Deel 3

  3. Hoe REGEXP_SUBSTR() werkt in MariaDB

  4. Hoe gebruik je een ALIAS in een PostgreSQL ORDER BY-clausule?