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

Jak sprawdzić, czy nazwa użytkownika już istnieje w PHP/MYSQL?

MYSQLI Reference:http://php.net/manual/en/mysqli.query. php

Odniesienie do ChNP:http://php.net/manual/en/book.pdo. php

Większość programistów PHP odkryła, jak używać rozszerzeń MySQLi i MySQL. Jednak obiekty danych PHP (PDO) oferują sposoby pracy z obiektami i pobierania przygotowanych instrukcji, co znacznie ułatwia pracę.

PDO to narzędzie dostępu do bazy danych w PHP, które umożliwia jednolity dostęp do wielu baz danych. Nie obsługuje składni specyficznej dla baz danych, ale pozwala na stosunkowo płynne przełączanie między różnymi platformami i bazami danych, co można po prostu zrobić, zmieniając parametry połączenia.

Poniżej znajduje się mała informacja o PDO, skierowana głównie do programistów, którzy nadal korzystają z rozszerzeń MySQL i MySQLi, podkreślając wyższość tych pierwszych. Różne aspekty zostaną omówione w kilku następnych akapitach.

  • Obsługa baz danych

Rozszerzenie PDO ma możliwość dostępu do dowolnej bazy danych, dla której został napisany sterownik PDO. Dostępnych jest wiele sterowników PDO, z których kilka obejmuje sterowniki PDO umożliwiające dostęp do baz danych Free TDS, Sybase, Microsoft SQL Server, IBM DB2, Firebird/Interbase 6, Oracle Call Interface i baz danych PostgreSQL.

Sterowniki nie są automatycznie dostępne w każdym systemie, więc będziesz musiał znaleźć dostępne sterowniki i dodać te, których potrzebujesz.

  • Łączenie z bazą danych

Istnieją różne składnie do nawiązywania połączeń z bazami danych, które zależą od konkretnych baz danych. Używając PDO, chcesz mieć pewność, że twoje operacje są opakowane w bloki try/catch i że używasz techniki wyjątków.

W normalnych przypadkach wystarczy nawiązać tylko jedno połączenie, a połączenia są zamykane przez zaprogramowanie uchwytu bazy danych jako null. Możesz wyszukać bardziej szczegółowe opcje i składnię w różnych witrynach zasobów.

  • Obsługa błędów

PDO pozwala na użycie wyjątków do obsługi błędów, dlatego zaleca się pakowanie PDO w bloki try/catch. W ten sposób PDO może zostać zmuszone do odpowiedniego atrybutu trybu błędu w celu wygenerowania wyjątku.

Istnieją trzy tryby – cichy (domyślny), ostrzegawczy i wyjątkowy. Te dwa ostatnie są bardziej przydatne w programowaniu DRY. Tryb błędu „Ostrzeżenie” jest przydatny do debugowania, a tryb „wyjątku” umożliwia łagodną obsługę błędów podczas ukrywania danych, które dana osoba może wykorzystać do wykorzystania systemu.

  • Wstawki i aktualizacje

PDO łączy typowe operacje wstawiania i aktualizowania bazy danych w prosty, dwuetapowy proces:Prepare >> [Bind] >> Execute . Dzięki tej metodzie możesz w pełni wykorzystać przygotowane oświadczenia PDO, które oferują ochronę przed złośliwymi atakami poprzez wstrzyknięcie SQL.

Przygotowane instrukcje to wstępnie zgodne instrukcje SQL, które można wykonać kilka razy, wysyłając te dane do serwerów. Są one korzystne, ponieważ dane używane w symbolach zastępczych są automatycznie chronione przed atakami SQL injection.

Kod PDO, aby sprawdzić, czy pola nazwy użytkownika i hasła istnieją w bazie danych:

 <?php
//Connections
try {
    $handler = new PDO('mysql:host=localhost;dbname=s','root', '*');
    $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e){
    exit($e->getMessage());
}

$name = $_POST['name']; 
$username = $_POST['username']; 
$email = $_POST['email'];   
$password = $_POST['password']; 
$password1 = $_POST['passwordconf'];
$ip = $_SERVER['REMOTE_ADDR'];


//Verifcation 
if (empty($name) || empty($username) || empty($email) || empty($password) || empty($password1)){
    $error = "Complete all fields";
}

// Password match
if ($password != $password1){
    $error = "Passwords do not match";
}

// Email validation

if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
    $error = "Enter a Valid email";
}

// Password length
if (strlen($password) <= 6){
    $error = "Choose a password longer then 6 character";
}

if(!isset($error)){
//no error
$sthandler = $handler->prepare("SELECT username FROM users WHERE username = :name");
$sthandler->bindParam(':name', $username);
$sthandler->execute();

if($sthandler->rowCount() > 0){
    echo "User Already Exists.";
} else {
    //Securly insert into database
    $sql = 'INSERT INTO users (name ,username, email, password, ip) VALUES (:name,:username,:email,:password,:ip)';    
    $query = $handler->prepare($sql);

    $query->execute(array(

    ':name' => $name,
    ':username' => $username,
    ':email' => $email,
    ':password' => $password,
    ':ip' => $ip

    ));
    }
}else{
    echo "error occured: ".$error;
    exit();
}

Mam nadzieję, że to odniesienie może być przydatne do samodzielnego opracowania kodów w przyszłym projekcie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ImportError:Brak modułu o nazwie „MySQL”

  2. Błąd podczas wstawiania daty — nieprawidłowa wartość daty:

  3. kolumna json a wiele kolumn

  4. Wyjątek mySQL:nie można połączyć się z żadnym z określonych hostów MySQL. przez C#

  5. Jak wyświetlić błędy dla mojego zapytania MySQLi?