Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak sprawdzić, czy wiersz istnieje w MySQL? (tzn. sprawdź, czy wiadomość e-mail istnieje w MySQL)

Poniżej przedstawiono wypróbowane, przetestowane i sprawdzone metody sprawdzania, czy wiersz istnieje.

(Niektóre z nich sam używam lub używałem w przeszłości).

Edytuj: Zrobiłem poprzedni błąd w mojej składni, gdzie użyłem mysqli_query() dwa razy. Proszę zapoznać się z wersją(ami).

Czyli:

if (!mysqli_query($con,$query)) które powinno być po prostu odczytane jako if (!$query) .

  • Przepraszam za przeoczenie tego błędu.

Uwaga boczna: Oba '".$var."' i '$var' Zrobić to samo. Możesz użyć jednego z nich, obie mają prawidłową składnię.

Oto dwa edytowane zapytania:

$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

}

aw twoim przypadku:

$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

}

Możesz także użyć mysqli_ z przygotowanym oświadczeniem metoda:

$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;

            }
        }
    }

Lub metoda PDO z przygotowanym oświadczeniem :

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


    }
?>
  • Przygotowane instrukcje najlepiej służą do ochrony przed wstrzyknięciem SQL.

Uwaga:

Kiedy masz do czynienia z formularzami i tablicami POST, jak użyto/określono powyżej, upewnij się, że tablice POST zawierają wartości, że metoda POST jest używana dla formularza i dopasowuje nazwane atrybuty dla danych wejściowych.

  • FYI:Formularze domyślnie korzystają z metody GET, jeśli nie zostało to wyraźnie poinstruowane.

Uwaga:<input type = "text" name = "var"> - $_POST['var'] dopasować. $_POST['Var'] nie pasuje.

  • W tablicach POST rozróżniana jest wielkość liter.

Konsultacja:

Błąd sprawdzania referencji:

Pamiętaj, że interfejsy API MySQL nie przeplatają się, na wypadek gdybyś odwiedzał to pytanie i używasz mysql_ do łączenia się (i wysyłania zapytań).

  • Musisz użyć tego samego, od łączenia do wysyłania zapytań.

Zapoznaj się z następującymi informacjami na ten temat:

Jeśli używasz mysql_ API i nie masz wyboru, aby z nim pracować, a następnie zapoznaj się z następującymi pytaniami i odpowiedziami na stosie:

mysql_* funkcje są przestarzałe i zostaną usunięte z przyszłych wydań PHP.

  • Czas wkroczyć w XXI wiek.

Możesz również dodać ograniczenie UNIQUE do (a) wierszy.

Referencje:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj aktualną wartość AUTO_INCREMENT dla dowolnej tabeli

  2. Funkcja MySQL FLOOR() — zaokrąglanie w dół do najbliższej liczby całkowitej

  3. Zarządzanie kontami użytkowników, role, uprawnienia, uwierzytelnianie PHP i MySQL

  4. Tworzenie aplikacji internetowej od podstaw przy użyciu Python Flask i MySQL:część 2

  5. Sprawdzasz tabelę pod kątem nakładania się czasu?