Здравствуйте, я сделал быстрый код для вставки имени в базу данных.OOP Mistake Вызов функции-члена insertName() для не-объекта в
Это класс для подключения к базе данных:
(я скрыть пароли и т.д., в основном я определить их в верхней части)
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>
Проблема:
При передаче данных (после завершения заполнения формы) Я получаю следующее сообщение об ошибке:
Фатальная ошибка: Вызов функция-член insertName() для не-объекта в C: \ xampp \ htdocs \ oop \ index.php в строке 17
Что я сделал не так? Это строка 17:
$Database->insertName($_POST['name']);
Как я могу это исправить и в чем проблема?
Thnaks.
После изменения его от $ дб на фактическое имя класса, я получаю это:
Вызов неопределенной базы данных метода :: insertName() в C: \ XAMPP \ HTDOCS \ уп \ index.php на линия 17
EDIT:
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);
}
}
}
'$ db-> insertName ($ _ POST [ 'имя']);' использовать это, то скажи. –
@GauravVashishtha '$ Db'! =' $ Db'. – bwoebi
@bwoebi за то, о чем вы говорите? –