Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да проверя дали съществува ред в MySQL? (т.е. проверете дали съществува имейл в MySQL)

Следните са изпитани, тествани и доказани методи за проверка дали съществува ред.

(Някои от които използвам сам или съм използвал в миналото).

Редактиране: Направих предишна грешка в синтаксиса си, където използвах mysqli_query() два пъти. Моля, консултирайте се с ревизията(ите).

Т.е.:

if (!mysqli_query($con,$query)) който трябваше просто да се прочете като if (!$query) .

  • Извинявам се, че пропуснах тази грешка.

Странична бележка: И двете '".$var."' и '$var' направи същото. Можете да използвате всеки един, и двата са валиден синтаксис.

Ето двете редактирани заявки:

$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

}

и във вашия случай:

$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

}

Можете също да използвате mysqli_ с изготвено изявление метод:

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

            }
        }
    }

Или метод на PDO с изготвено изявление :

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


    }
?>
  • Подготвените оператори е най-добре да се използват за защита срещу SQL инжекция.

N.B.:

Когато работите с формуляри и POST масиви, както са използвани/очертани по-горе, уверете се, че POST масивите съдържат стойности, че се използва POST метод за формуляра и съответства на именувани атрибути за входовете.

  • FYI:Формулярите по подразбиране са с GET метод, ако не е указано изрично.

Забележка:<input type = "text" name = "var"> - $_POST['var'] съвпада. $_POST['Var'] няма съвпадение.

  • POST масивите са чувствителни към главни букви.

Консултирайте се:

Грешка при проверката на препратките:

Моля, имайте предвид, че MySQL API не се смесват, в случай че може да посещавате тези въпроси и отговори и използвате mysql_ за свързване с (и запитване).

  • Трябва да използвате същия от свързването към заявката.

Консултирайте се със следното за това:

Ако използвате mysql_ API и нямате избор да работите с него, след това се консултирайте със следните въпроси и отговори в стека:

mysql_* функциите са отхвърлени и ще бъдат премахнати от бъдещи версии на PHP.

  • Време е да влезем в 21-ви век.

Можете също да добавите УНИКАЛНО ограничение към (а) ред(ове).

Препратки:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възстановете структурата на таблицата от frm и ibd файлове

  2. Тире в имената на колони в MySQL DB

  3. Как да разположите Percona XtraDB Cluster 8 за висока наличност

  4. Как да върнете редове, които имат еднакви стойности на колони в MySql

  5. Грешка при преименуването на колона в MySQL