2014-01-12 276 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"); 

这应该有效。