2014-01-12 4 views
-1

Хорошо, поэтому вчера я задал аналогичный вопрос и мне сказали узнать pdo, после чего я посмотрел, как вставлять данные в базу данных с помощью pdo, и следил за учебником, и у меня есть та же проблема. Страница становится пустым и ничего не добавляется в базу данных .. вот мой кодВставка данных в базу данных из html-формы php pdo

register.php

<html> 
    <head> 
    <link rel="stylesheet" type="text/css" href="style2.css"> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <body> 
    <center><h1>Register</h2></center> 
    <?php 
    if (empty($_POST)){ 
    ?> 
    <form name='registration' action="register.php" method="post"> 

    <label for 'user'>Desired Username:</label><br> 
    <input type="text" name="User" /> 
    <br> 
     <label for 'pass'>Password:</label><br> 
    <input type="text" name="User" /> 
    <br> 

    <label for 'birth'>Birthday (ex: 1992-11-11):</label><br> 

    <input type="text" name="Birth" /> 
    <br> 
    <label for 'email'>Email:</label><br> 

    <input type="text" name="email" /> 
    <br> 
    <label for 'catch'>Catch Phrase:</label><br> 

     <textarea rows="2" cols="25" name="Catch" maxlength="10"></textarea> 
    <br> 
     <input type="submit" name="submit" value="submit"> 
</form> 
<?php 
    } else { 
    $db_user = 'a3410999_dom'; 
$db_pass = '*****'; 
$db = new PDO('mysql:host=mysql4.000webhost.com;dbname=a3410999_members', $db_user,  $db_pass); 

$form = $_POST; 
$username = $form[ 'user' ]; 
$password = $form[ 'pass' ]; 
$birth = $form[ 'birth' ]; 
$email = $form[ 'email' ]; 
$catch = $form[ 'catch' ]; 

$sql = "INSERT INTO members (user, pass, birth, email, catch) VALUES (:username, :password, :birth, :email, :catch)"; 

$query = $db->prepare($sql); 
$query->execute(array(':username'=>$username, ':password'=>$password, ':birth'=>$birth, ':email'=>$email, ':catch'=>$catch)); 

} 
    ?> 

    </body> 
    </html> 
+0

'A! = A;' <= просто мысль. Кроме того, ваш элемент формы пароля выключен. Это проблема отладки. Он возвращается к пресловутой «чертежной доске» для вас. Классический код C.O.W.'. –

+0

поместите свой код в блок 'try ... catch', чтобы узнать, не получилось ли что-то не так. – Soosh

+0

«Страница не заполняется и ничего не добавляется в базу данных» - это, как правило, индикатор ошибки сервера. ознакомьтесь с журналами ошибок webserver/php! Они должны сказать вам, что не так в вашем коде. – codeling

ответ

0

Прежде всего, у вас есть ошибка здесь

<label for 'user'>Desired Username:</label><br> 
<input type="text" name="User" /> 
<br> 
    <label for 'pass'>Password:</label><br> 
<input type="text" name="User" /> 
<br> 

Вы установите имя «Имя пользователя» = имя И также одно и то же имя для «Пароль»

+0

спасибо, какая глупая ошибка .. так беспокоился о PHP, что я упустил html. спасибо, сейчас он работает :) – user3186749

+0

Я редактировал ваш вопрос кстати. Вы не можете пометить свой собственный вопрос как '(разрешенный)'. То, как это делается здесь, заключается в том, что как только кто-то даст вам ответ, который решает вашу проблему, вы затем щелкните белую галочку рядом с ответом, пока он не станет зеленым. Это дает человеку, который помог вам, очки репутации, так как он/она выходил из своего пути, чтобы помочь в конкретной ситуации. @ user3186749 –

0
// function for INSERTING DATA IN TABLES 
    public function insert($t, $v, $r) 
    { 
     if (($t != null) && ($r != null) && ($v != null) && (count($v) == count($r))) 
     { 
     $instruction = 'INSERT INTO `' . DBNAME . '`.`' . $t . '` ('; 

     for ($i = 0; $i < count($r); $i++) 
      $_r[$i] = '`' . $r[$i] . '`'; 
     $_r = implode(',', $_r); 

     $instruction .= $_r . ') VALUES ('; 

     for ($i = 0; $i < count($r); $i++) 
      $r[$i] = ':' . $r[$i]; 
     $r = implode(',', $r); 

     $instruction .= $r . ');'; 

     $r = explode(',', $r); 

     try { 
      $statement = $this->PDO->prepare($instruction); 

      for ($i = 0; $i < count($r); $i++) 
       $statement->bindParam($r[$i], $v[$i]); 

      if ($statement->execute()) 
       return true; 
      else { 
       echo("Error: " . $statement->errorCode()); 
       return false; 
      } 
     } catch (PDOException $e) { 
      echo("Error: " . $e->getMessage()); 
      return false; 
     } 
     } else 
     return false; 
    } 

$t = 'groups'; 
$v = array(your data); 
$r = array(your fields); 

if (insert($t, $v, $r)) 
    echo("ko"); 
else 
    echo("ko"); 

Это должно работать.

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