こんにちは私はクラスを使用してPDO接続後に挿入プロセスに取り組んでいます。すべての接続と表示を確認してください。私は、このエラーライン持っているクラスに新しい関数を作成し、挿入処理のためのコマンドを入力したときには:致命的なエラー:未知のエラー:var/wwwで定義されていないfunction_name()を呼び出す
Fatal error: Uncaught Error: Call to undefined function db_connection_function() in /var/www/html/test/index.php:29 Stack trace: #0 /var/www/html/test/index.php(48): connection->add_member_to_table() #1 {main} thrown in /var/www/html/test/index.php on line 29
この機能は私にエラーを与える
public function add_member_to_table() {
$this->query = db_connection_function()->prepare("INSERT INTO users(username, password) VALUES('onur', 'turali')");
$this->query->execute();
if($this->query == true) {
echo "Member registered";
} else {
echo "Error";
}
}
を私はconnection_db_link>の$ this - を試してみました。..私はconnect_db_link(関数名はmysqlに接続する)の代わりに関数名を入力しようとしたが、これは役に立たない。どうすればこの問題を解決できますか?
私のソースコード:
<?php
class connection{
public $connection_db_link;
public $db_host = "localhost";
public $db_user = "root";
public $db_pass = "Antalya07Ragnar";
public $db_name = "test";
public function db_connection_function(){
try{
$this -> connection_db_link = new PDO("mysql:host=$this->db_host;$this->db_name", $this->db_user, $this->db_pass);
$this->connection_db_link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $this->connection_db_link;
}catch(PDOException $e){
echo "Error: ".$e->getMessage();
}
}
public $query;
public function add_member_to_table(){
$this->query = db_connection_function()->prepare("INSERT INTO users(username, password) VALUES('onur', 'turali')");
$this->query->execute();
if($this->query == true){
echo "Member registered";
}else{
echo "Error";
}
}
public function display_connection(){
if($this->connection_db_link == true){
echo "Connection success";
}
}
}
$user = new connection;
$user->db_connection_function();
$user->display_connection();
$user->add_member_to_table();
?>
そのあなたの方法:あなたが確信している
後、準備文では、このように動作します、その '$ this-> db_connection_function()'とコンストラクタでそれを作成し、それを代わりにプロパティとして使うだけでいいのです – Ghost
SQLプロセスの準備が必要なときは、常に関数を使って接続します。なぜなら、コマンドを準備する前に関数を呼び出すからです。しかし、別のファイルに接続機能がある場合、私はコンストラクタを使用します。それは私が知っている良い方法です。しかし、クラスを使用してそのPDO接続は、実際に私を強制した。 – Onur
関数を呼び出すたびに新しい接続を作成しないでください。 '$ this-> connection_db_link'がすでに設定されているかどうかを確認し、新しい接続を開く代わりにその変数を返します。 – Barmar