Intereting Posts
Как реализовать класс bootstraping в фреймворке PHP? Изменение сегодняшней даты и времени в php Как исправить память, израсходованную с помощью PHPExcel? Как настроить G-WAN для использования php-fpm? CURSOR в proc, который только блокирует текущую строку UPDATEd (в то время как UPDATING), и ничего больше для продолжительности? Вставить несколько записей сразу с помощью Laravel Предупреждение «Excel нашел нечитаемый контент» при открытии файлов Excel, сделанных с помощью PHPExcel Самый простой способ извлечь изображения из документа MS Word с помощью PHP? Предупреждение: mysql_error (): предоставленный аргумент не является допустимым ресурсом MySQL-Link Как разобрать объект JSON в PHP? Как получить случайное значение из массива Имеет ли PHP str_replace ограничение более 13 символов? Как проверить загрузку файлов с помощью laravel и phpunit? Развертывание проекта Symfony2 Как я могу отлаживать, почему простой запрос MySQL возвращает false?

Проверьте, существует ли имя пользователя PDO

Как я смогу проверить несколько факторов вместе вместо проверки на каждый из них? Поэтому в основном я использую PDO, и я должен убедиться, что имена пользователей и электронные письма уникальны. Итак, как бы я это сделал? я видел

if ( $sthandler->rowCount() > 0 ) { // do something here } 

Но есть ли лучший способ сделать это. Также, если нет, кто-то может объяснить, как я буду работать с этим.

EDIT Вот мой код запроса, который вводится в базу данных

  <?php 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)) { echo "Complete all fields"; } // Password match if ($password != $password1) { echo $passmatch = "Passwords don't match"; } // Email validation if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo $emailvalid = "Enter a valid email"; } // Password length if (strlen($password) <= 6){ echo $passlength = "Choose a password longer then 6 character"; } function userExists($db, $user) { $userQuery = "SELECT * FROM userinfo u WHERE u.user=:user;"; $stmt = $db->prepare($userQuery); $stmt->execute(array(':user' => $user)); return !!$stmt->fetch(PDO::FETCH_ASSOC); } $user = 'userName'; $exists = userExists($db, $user); if(exists) { // user exists already. } else { // user doesn't exist already, you can savely insert him. } if(empty($passmatch) && empty($emailvalid) && empty($passlength)) { //Securly insert into database $sql = 'INSERT INTO userinfo (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 )); } ?> 

Solutions Collecting From Web of "Проверьте, существует ли имя пользователя PDO"

  <?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 don't 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 "exists! cannot insert"; } else { //Securly insert into database $sql = 'INSERT INTO userinfo (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(); } 

Что-то вроде этого должно работать:

 function userExists($db, $user) { $userQuery = "SELECT * FROM userinfo u WHERE u.user=:user;"; $stmt = $db->prepare($userQuery); $stmt->execute(array(':user' => $user)); return !!$stmt->fetch(PDO::FETCH_ASSOC); } $user = 'userName'; $exists = userExists($db, $user); if(exists) { // user exists already. } else { // user doesn't exist already, you can savely insert him. } 

Код, который вы показываете, не имеет смысла проверять уникальность имени пользователя и электронной почты. Вы должны установить UNIQUE KEY в базе данных.