Cохранить значение $_POST в базу данных с помощью PDO

Рейтинг: 0Ответов: 1Опубликовано: 13.12.2014

Привет.

У меня есть форма с полем: Имя

<input type="name" name="name" id="name" placeholder="Имя">

Получаю имя так:

//получаем имя  
$name = $_POST['name'];

Подключился к базе данных:

    try {
      $db = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $db->exec("set names utf8");

    // Создать таблицу
      $sgl = "CREATE TABLE users_name (
        id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL DEFAULT '',
        password VARCHAR(255) NOT NULL DEFAULT '',
        email VARCHAR(255) NOT NULL DEFAULT '',
        created DATE NOT NULL DEFAULT '0000-00-00',

        PRIMARY KEY (id)
      )";
      if($db->exec($sgl) !== false) echo 'Таблица создана!';
      //Закрытие соединения
  $db = null;
}
catch(PDOException $e) {
  echo $e->getMessage();
}

Всё работает, только не могу понять, как записать Имя пользователя в базу данных. И сравнение, если такое имя уже существует в Базе данных, вывести сообщение: Такое имя уже есть.

P.S. Может, на примере пойму логику.

Ответы

▲ 2
//фильтрация данных
$name = ...;
//...
$QUH = $db->prepare('SELECT id FROM users_name WHERE name=:name');
$QUH->bindParam(':name',$name);
$QUH->execute(); 
if($QUH->rowCount()==0) { 
    $QUH = $db->prepare('INSERT INTO users_name (name,...) value (:name, ...)');
    $QUH->bindParam(':name', $name);
    //все параметры(кроме id)
    $QUH->execute();
    //$id = $db->lastInsertId(); - если нужно узнать присвоенный AUTO_INCREMENT
    $msg = 'регистрация завершена';
} else {
    $msg = 'имя уже используется'; 
}