2011-12-25 17 views
0

私はクラスを作成しました。ユーザーからフォーム情報を取得し、oopプリペアドステートメントを使用してデータベースに保存する方法を理解しようとしています。コードを提示します。誰かが私が間違っていることを教えてください。OO mysqli prepared statements助けてください

<?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

にbind_paramを変更を取得していますか? – Matt

答えて

0

私はuser_idが主キーであり、自動インクリメントであると思います。 user_idの値を挿入してbind paramsからも削除する必要はありません。あなたはどのようなエラーを

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

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

申し訳ありませんが、あなたが言ったことを試しました、それは同じことをやっています。データベース接続をテストするときにConnectedと表示されます。しかし、それは私のデータベーステーブルにデータを挿入していません。私はあなたがbind_paramについて言ったことを理解していないし、$ stmt-> bind_paramにしました。なぜなら、私が投稿したものを見ていて、それはそう言いますから。あなたのbind_paramには –

+0

があり、idの "isssss"に "i"があります。この "i"を削除しても問題ありません。 –

+0

Kashifがうまく働いてくれてありがとうございました。今は他のものを手掛けることができます。これを一日中試してみました。あなたの命の恩人にもう一度感謝します。 –

関連する問題