こんにちは、名前をデータベースに挿入する簡単なコードを作成しました。
これはデータベース接続用のクラスです:
(私はパスワードなどを非表示にします。基本的には上部で定義します)
class Database
{
private $pdo;
private $query;
public function __construct()
{
try
{
$this->pdo = new PDO('mysql:host='.MYSQL_HOST.';dbname=oop', MYSQL_USER, MYSQL_PASSWORD);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'Sucessfully connected to MySQL server!';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
public function query($name)
{
$this->query = $this->pdo->prepare("INSERT INTO user (name) VALUES (:name)");
$this->query->bindValue(":name", $name);
$this->query->execute();
echo 'Sucessfully send!';
}
}
これは、基本的にクエリを使用して処理するクラスです。
class System
{
private $Database;
public function __construct(Database $Database = null)
{
$this->Database = $Database;
}
public function insertName($name)
{
if ($this->db != null)
{
$this->db->query($name);
}
}
}
これはconfig.phpです
include("system.class.php");
include("db.class.php");
$system = new System($Database);
$db = new Database();
そして、これはindex.phpです
<?php
include("config.php");
?>
<html>
<form action="" method="post">
<input type="text" name="name">
<input type="submit">
</form>
<?php
if (isset($_POST) && !empty($_POST['name']))
{
$Database->insertName($_POST['name']);
echo 'Scessfuly inserted!';
}
?>
</html>
問題:
データを送信するとき (フォームを送信した後)、次のエラーが表示されます。
致命的なエラー: 17 行目の C:\xampp\htdocs\oop\index.php の非オブジェクトに対するメンバー関数 insertName() の呼び出し
私は何を間違えましたか?これは17行目です:
$Database->insertName($_POST['name']);
これを修正するにはどうすればよいですか?また、何が問題なのですか?
タナクス。
$db からクラスの実際の名前に変更すると、次のようになります。
C:\xampp\htdocs\oop\index.php の 17 行目の未定義メソッド Database::insertName() の呼び出し
編集:
if (isset($_POST) && !empty($_POST['name']))
{
$system->insertName($_POST['name']);
echo 'Scessfuly inserted!';
}
class System
{
private $Database;
public function __construct(Database $Database = null)
{
$this->Database = $Database;
}
public function insertName($name)
{
if ($this->Database != null)
{
$this->Database->query($name);
}
}
}