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

Как да проверите дали потребителското име вече съществува с PHP/MYSQL

Справка за MYSQLI:http://php.net/manual/en/mysqli.query. php

Справка за PDO:http://php.net/manual/en/book.pdo. php

Повечето PHP програмисти са открили как да използват MySQLi и MySQL разширения. Въпреки това PHP Data Objects (PDO) предлагат начини за работа с обекти и извличане на подготвени изрази, което прави работата много по-лесна.

PDO е инструмент за достъп до база данни в PHP, който позволява еднакъв достъп до множество бази данни. Той не поддържа специфичния синтаксис за бази данни, но позволява относително безпроблемно превключване между различни платформи и бази данни, което може просто да стане чрез промяна на низа за връзка.

По-долу е дадена малко информация за PDO, основно насочена към програмисти, които все още използват MySQL и MySQLi разширения, очертавайки превъзходството на първите. Различни аспекти ще бъдат разгледани в следващите няколко параграфа.

  • Поддръжка на бази данни

Разширението на PDO има възможност за достъп до всяка база данни, за която е написан PDO драйверът. Има много налични PDO драйвери, някои от които включват PDO драйвери, предназначени за достъп до Free TDS, Sybase, Microsoft SQL Server, IBM DB2, Firebird/Interbase 6, Oracle Call Interface и PostgreSQL бази данни, сред много други.

Драйверите не са автоматично достъпни във всяка система, така че ще трябва да намерите наличните си драйвери и да добавите тези, от които се нуждаете.

  • Свързване с база данни

Има различен синтаксис за установяване на връзки към база данни, които зависят от конкретни бази данни. Когато използвате PDO, искате да сте сигурни, че вашите операции са обвити в блокове try/catch и че използвате техниката на изключение.

В нормални случаи е необходимо да се направи само една връзка и връзките се затварят чрез програмиране на манипулатора на базата данни като нула. Можете да търсите по-конкретни опции и синтаксис в различни сайтове с ресурси.

  • Обработка на грешки

PDO позволява използването на изключения за обработка на грешки, поради което се препоръчва да обвиете PDO в блокове try/catch. По този начин PDO може да бъде принуден да влезе в съответния атрибут на режим на грешка, за да произведе изключение.

Има три – безшумен (по подразбиране), режим на предупреждение и изключение. Последните две са по-полезни при програмирането на DRY. Режимът за грешка „Предупреждение“ е полезен за отстраняване на грешки, а режимът „изключение“ позволява грациозна обработка на грешки, като същевременно се крият данни, които човек може да използва, за да експлоатира вашата система.

  • Вмъквания и актуализации

PDO кондензира общите операции за вмъкване и актуализиране на база данни в прост процес в две стъпки:Prepare >> [Bind] >> Execute . С този метод можете да се възползвате напълно от подготвените оператори на PDO, които ви предлагат защита срещу злонамерени атаки чрез SQL инжектиране.

Подготвените оператори са предварително попълнени SQL оператори, които могат да бъдат изпълнени няколко пъти чрез изпращане на тези данни до сървърите. Те са изгодни с това, че данните, използвани в рамките на заместващите, са автоматично защитени от атаки с инжектиране на SQL.

PDO код, за да проверите дали полетата за потребителско име и пароли съществуват в DB:

 <?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();
}

Надяваме се, че тази справка може да ви бъде полезна, за да разработите сами кодовете в бъдещия проект.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql пълнотекстово търсене в PHP с помощта на низ, съдържащ ключови думи

  2. изберете от една таблица, броете от друга, където идентификаторът е свързан

  3. Mysql не може да се свърже - Достъпът е отказан (използвайки парола да)

  4. Как да конфигурирам приложението за пружинно зареждане да използва SSL/TLS през MySQL?

  5. MySQL репликация:Грешни транзакции в GTID базирана репликация