2015-07-07 3 views
0

Я изучаю PHP.используя сервер XAMPPlocal для тестирования. Нужна помощь ниже , когда я вводим данные и нажимаю регистр в форме, я просто вижу пустую страницу с ссылкой action.php. Код для action.php ниже:PHP PDO не может вставить данные в MySQL DB

include 'config.php'; 
      error_reporting(E_ALL); 
      ini_set('display_errors', 1); 
      if(isset($_POST['register'])){ 
       require 'config.php'; 
       $first_name = !empty($_POST['fname']) ? trim($_POST['fname']) : null; 
       $last_name = !empty($_POST['lname']) ? trim($_POST['lname']) : null; 
       $user_name = !empty($_POST['uname']) ? trim($_POST['uname']) : null; 
       $pass = !empty($_POST['upass']) ? trim($_POST['upass']) : null; 
       $user_email = !empty($_POST['umail']) ? trim($_POST['umail']) : null; 
       $sql = "INSERT INTO ams_users (id, firstname, lastname, username, password, email) 
             VALUES(?,?,?,?,?)"; 
       $stmt = $pdo->prepare($sql); 

       $result = $stmt->execute(0,$first_name, $last_name, $user_name, $pass, $user_email); 
       if($result){ 
        echo 'Thank you for registering'; 
       }else{ 
        echo 'sorry'; 
        } 
       }enter code here 

код формы register.php ниже:

<div class="reg-form"> 
     <h1>Register</h1> 
     <form action="action.php" method="POST"> 
      <p><label>First Name* :</label> 
      <input id="firstname" type="text" name="fname" /></p> 
      <p><label>Last Name* :</label> 
      <input id="lasttname" type="text" name="lname" /></p> 

      <p><label>User Name* : </label> 
      <input id="username" type="text" name="uname" /></p> 

      <p><label>Password: </label> 
      <input id="password" type="password" name="upass" /></p> 
      <p><label>E-Mail: </label> 
      <input id="e-mail" type="e-mail" name="umail"/></p> 

      <input type="submit" name="submit" value="register" /> 
      </form> 
     </div> 

MySQL таблица имеет 5 записей: идентификатор (автоинкремент, ПгвЬЫате, ФАМИЛИЯ, имя пользователя, пароль и адрес электронной почты.

please help where I am going wrong. 
+1

Вы получаете какие-либо ошибки? Также почему «введите код здесь» в свой источник? Это неверно PHP, поэтому здесь может быть синтаксическая ошибка. – tadman

ответ

1
  • execute() принимает ар не так, как вы.
  • У вас есть меньше вопросительных знаков, то параметр
  • Если вы id AUTOINCREMENTED, то вы можете исключить его из вашего запроса

Таким образом, становится:

INSERT INTO ams_users (firstname, lastname, username, password, email) 
VALUES(?,?,?,?,?) 

Затем вы выполняете:

$result = $stmt->execute(array($first_name, 
           $last_name, 
           $user_name, 
           $pass, 
           $user_email) 
       ); 

or:

INSERT INTO ams_users (id,firstname, lastname, username, password, email) 
VALUES('',?,?,?,?,?) 

Проблема вы должны были получить ошибку, поэтому убедитесь, что он включен:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
+0

Операторы ошибок находятся в моем файле config.php. Что отлично работает, когда я не использую метод массива. –

+0

Я попробую метод меда todat и дам вам знать, есть ли у меня проблемы. Спасибо –

+0

Привет я проверил, я использовал неправильную переменную соединения $ pdo вместо $ db. По этой причине ошибки не были показаны. –

Смежные вопросы