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

這應該有效。