2017-07-05 6 views
-2
// connection.php file 

<?php 


class Connection{ 

    private $host; 
    private $username; 
    private $password; 
    private $database; 

    public function __construct($host,$username,$password,$database) 
    { 
    try{ 
    $conn = new PDO("mysql:host=".$host.";dbname=".$database, $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    return $conn; 
    }catch(PDOException $e) 
    { 
     return $e->getMessage(); 
    } 
    } 

} 

?> 

// user.php 

<?php 

class Users extends Connection{ 

    private $username; 
    private $email; 
    private $password; 

    public function __construct($username,$email,$password){ 

    $this->username=$username; 
    $this->email=$email; 
    $this->password=$password; 

    } 

    public function addUser(){ 
    $conn = new Connection("localhost","root","","userdata"); 
    echo "database connection established"; 
    die(); 
    $sql = $conn->prepare("INSERT INTO information (UserName, Email, Password) VALUES (?, ?, ?)"); 
    $conn->bind_param("sss", $username, $email, $password); 
    $username=this->username; 
    $password=this->password; 
    $email=this->email; 
    $sql->execute(); 

    echo "New records created successfully"; 

    $sql->close(); 
    $conn->close(); 

    } 
} 

?> 

process.php 

<?php 

include('lib/connection.php'); 

if(isset($_POST['username']) && isset($_POST['email']) && isset($_POST['password'])) 
{ 
    $user = new User("Gautam","[email protected]","123456"); 
    $user->addUser(); 
} 

?> 

したがって、私はprocess.phpファイルを実行しようとすると、レコードはデータベースに追加されません。私はデータベース接続のロジックを書いた接続クラスを別に作成しました私はそのクラスを継承し、ユーザーをデータベースに追加した後、process.phpのユーザークラスのオブジェクトを呼び出しましたが、レコードはデータベースに追加されません。関連する問題は何かを明確にしてください。オブジェクト指向のPHPコードエラー

+1

あなたは、このエラーメッセージを追加することはできますか? – Yupik

+0

'bind_param'メソッドの実装を示します。 –

+3

「問題が何であるかを明確にしてください」。 –

答えて

-1

すべての最初は、あなたのクラスでこれに代えて$これを使用し、第二間違ったクラス名のユーザーを呼び出し、それは修正してみてください、動作するはずですしてください、ユーザーです。上記のように

$user = new Users("Gautam","[email protected]","123456"); 

とクラスのユーザーのあなたのadduserの機能で

$username=$this->username; 
$password=$this->password; 
$email=$this->email; 

変化とそれが動作するはずです。..

+0

バディを持っていないということです。死ぬ(); – GeekyGautam

+0

をdoesnotそれを着用エコー「を設立したデータベースonnection」のような状態で、この行を入れて持って'関数 –

0

あなたのコードの問題は、あなたが実行する前に、任意のパラメータを結合しなかったということです。

チェックこれらの行:

$sql = $conn->prepare() 
$conn->bind_param("sss", $username, $email, $password); 

は、この行はまた$sql->bind_param("sss", $username, $email, $password);

であるべきで、それが持っているPDOはbind_param()機能を持っていませんのでご注意:

は、したがって、あなたが必要bindParam()

$sql->bindParam(1, $this->username); 
    $sql->bindParam(2, $this->email); 
    $sql->bindParam(3, $this->password); 

以下、このコードは動作するはずです:

<?php 

class Users extends Connection 
{ 

    private $username; 
    private $email; 
    private $password; 

    public function __construct($username, $email, $password) 
    { 
     $this->username = $username; 
     $this->email = $email; 
     $this->password = $password; 

    } 

    public function addUser() 
    { 
     $conn = new Connection("localhost", "root", "", "userdata"); 
     echo "database connection established"; 

     $username = $this->username; 
     $password = $this->password; 
     $email = $this->email; 



     $sql = $conn->prepare("INSERT INTO information (UserName, Email, Password) VALUES (?, ?, ?)")->execute(array($username,$email,$password)); 

     if (!$sql) { 

      print_r("error : " . $conn->errorInfo()); 
     } else { 

      echo "New records created successfully"; 
     } 
     $sql->close(); 
     $conn->close(); 
    } 
} 

?> 

がPS:あなたのパスワードを準備するために なpassword_hash()password_verify()としてPHPの組み込み関数を使用して、プレーンテキストでパスワードを保存しないでください。

関連する問題