2011-12-25 94 views
0

我創建了一個類,我一直在破壞我的大腦,試圖找出如何從用戶獲取表單信息並使用oop準備語句將其存儲在數據庫中。我將介紹這些代碼。請有人告訴我我做錯了什麼。OO mysqli準備語句幫助請

代碼爲我的類

<?php include '../includes/Constants.php'; ?> 
<?php 

class User { 

    public $id, 
    $fname, 
    $lname, 
    $email, 
    $username, 
    $password, 
    $conf_pass; 
    protected $db_conn; 

    //declare variables 
    public function __construct() { 
     $host = DB_HOST; 
     $user = DB_USER; 
     $pass = DB_PASS; 
     $db = DB_NAME; 

     //Connect to database 
     $this->db_conn = new mysqli($host, $user,$pass, $db); 

     //Check database connection 
     if ($this->db_conn->connect_error) { 
      echo 'Connection Fail: ' . mysqli_connect_error(); 
      exit(); 
     } else { 
      echo 'Connected'; 
     } 
    } 

    function regUser($fname, $lname, $email, $username, $password, $conf_pass) { 



     if ($this->db_conn->prepare("INSERT INTO USERS (`user_id`,`user_fname`,`user_lname`, 
      `user_email`,`username`,`user_pass`) VALUES (NULL,?,?,?,?,?)")) { 


      //Bind-para to values from form 
      $stmt->bind_param('isssss', $id, $fname, $lname, $email, $username, $password); 

      //execute statement 
      $stmt->execute(); 

      $this->id = $id; 
      $this->fname = $fname; 
      $this->lname = $lname; 
      $this->email = $email; 
      $this->username = $username; 
      $this->password = $password; 

      //end statement 
      $stmt->close(); 
     } 
    } 

} 

?> 

下面是我使用的創建對象的代碼。

<?php include_once 'User.php'; ?> 
<?php 

//Creating new User Object 
$newUser = new User(); 

$fname = $_POST['fname']; 
$lname = $_POST['lname']; 
$email = $_POST['email']; 
$username = $_POST['username']; 
$password = $_POST['password']; 
$conf_pass = $_POST['conf_pass']; 


$newUser->regUser($fname, $lname, $email,$username, $password, $conf_pass); 
?> 

這裏是我的測試形式的代碼。請告訴我我做錯了什麼。任何幫助是極大的讚賞。

<html> 
    <head> 
     <title></title> 
     <link href="stylesheets/styles.css" rel="stylesheet" type="text/css"/> 
    </head> 


    <body> 
     <form action = "Resources/testClass.php" method="post" enctype="multipart/form-data"> 
      <label>First Name: </label> 
      <input type="text" name="fname" id="fname" size="25" maxlength="25"/> 
      <label>Last Name: </label> 
      <input type="text" name="lname" id="lname" size="25" maxlength="25"/> 
      <label>Email: </label> 
      <input type="text" name="email" id="email" size="25" maxlength="40"/> 
      <label>Username: </label> 
      <input type="text" name="username" id="username" size="25" maxlength="32"/> 
      <label>Password: </label> 
      <input type="password" name="password" id="password" size="25" maxlength="32"/> 
      <label>Re-enter Password: </label> 
      <input type="password" name="conf_pass" id="conf_pass" size="25" maxlength="32"/> 
      <br /><br /> 
      <input type="submit" name="submit" id="submit" value="Register"/> 
      <input type="reset" name="reset" id="reset" value="Reset"/> 
     </form> 

    </body> 
</html> 
+0

你得到什麼錯誤? – Matt 2011-12-25 07:18:17

回答

0

我猜user_id是主鍵並且是自動增量。您不需要爲user_id插入值並將其從綁定參數中移除。

if ($this->db_conn->prepare("INSERT INTO USERS (`user_fname`,`user_lname`, 
     `user_email`,`username`,`user_pass`) VALUES (?,?,?,?,?)")) 

和變化bind_param到

$stmt->bind_param('sssss', $fname, $lname, $email, $username, $password); 
+0

對不起,我嘗試了你所說的,它仍然做同樣的事情。它只是說當我測試數據庫連接時連接。但它沒有將數據插入到我的數據庫表中。我不明白你對bind_param所說的話,把它變成$ stmt-> bind_param,因爲我正在查看我發佈的內容,並說明了這一點。 – 2011-12-25 07:40:05

+0

在你的bind_param中有「我」在「isssss」的id。刪除這個「我」,它應該工作正常。 – 2011-12-25 07:41:42

+0

非常感謝Kashif的工作,現在我可以開始處理其他問題了。一直在嘗試這一點。再次感謝您的救命。 – 2011-12-25 07:48:42