2015-07-13 3 views
0

Я пытаюсь сделать форму регистрации, используя PDO.I получила следующий вид:Вставка данных в базу данных с использованием PDO

<form name="registration" action="registration.php" method="POST"> 
     <label for 'username'>Username: </label> 
      <input type="text" name="userName"/> 
     <label for 'password'>Password: </label> 
      <input type="password" name="pass"/> 
     <label for 'first_name'>First name: </label> 
      <input type="text" name="fullName"/> 

     <label for 'email'>Email: </label> 
      <input type="text" name="email"/> 
     <br/> 
     <button type="submit">Submit</button> 
</form> 

И я получил registration.php файл для подключения базы данных и вставить значение:

<?php 


$user = 'root'; 
$pass = '8169x5it'; 
$db = new PDO('mysql:host=localhost;dbname=reg_form', $user, $pass); 

$form = $_POST; 
$usernName = $form[ 'userName' ]; 
$pass = $form[ 'pass' ]; 
$fullName = $form[ 'fullName' ]; 
$email = $form[ 'email' ]; 


$sql = "INSERT INTO WebsiteUsers (userName, pass, fullName, email) VALUES (:userName, :pass, :fullName, :email)"; 

$query = $db->prepare($sql); 
$query->execute(array(':userName'=>$userName, ':pass'=>$pass, ':fullName'=>$fullName, ':email'=>$email)); 
?> 

Итак, проблема заключается в том, когда я помещаю некоторые из файлов и нажимаю кнопку «Отправить», мои данные НЕ вставляются в базу данных. Пожалуйста, помогите мне, я новичок в PDO и mysql, и я не понимаю, что случилось. Заранее спасибо!

+2

основной отладки: 'var_dump ($ _ POST)', чтобы убедитесь, что PHP действительно получил ваши значения, затем начните проверять такие вещи, как возвращаемое значение '-> execute()'. вы просто предполагаете, что запрос преуспел, что совсем не так. –

+0

Попробуйте установить PDO для исключения, если произошла ошибка. Могут быть ошибки, которые молча игнорируются. – AnotherGuy

+0

Чтобы установить режим ошибок PDO на PDO :: ERRMODE_EXCEPTION, вы можете использовать '$ pdo = new PDO ('mysql: host = localhost; dbname = reg_form', $ user, $ pass, array ( PDO :: MYSQL_ATTR_DIRECT_QUERY = > ложно, \t PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION )); ' – VolkerK

ответ

0
  • Проверка на наличие ошибок
  • Удалить ненужные переменные
  • Проверьте, если разместить переменные установлены с isset()

try{ 
    $user = 'root'; 
    $pass = '8169x5it'; 
    $db = new PDO('mysql:host=localhost;dbname=reg_form', $user, $pass); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $sql = "INSERT INTO WebsiteUsers (userName, pass, fullName, email) 
      VALUES (:userName, :pass, :fullName, :email)"; 

    if($query = $db->prepare($sql)){ 
     $query->bindValue(':userName', $_POST['userName']); 
     $query->bindValue(':pass', $_POST['pass']); 
     $query->bindValue(':fullName', $_POST['fullName']); 
     $query->bindValue(':email', $_POST['email']); 
     if($query->execute()){ 
      echo 'execute() success '; 
      echo 'affected rows = '.$stmt->rowCount(); 
     }else{ 
      echo 'execute() failed'; 
     } 
    }else{ 
     echo 'prepare() failed'; 
    } 
}catch(PDOException $e) { 
    // Print PDOException message 
    echo $e->getMessage(); 
} 
Смежные вопросы