您好,我已经编写了一个快速代码来将名称插入数据库。
这是数据库连接的类:
(我隐藏密码等,基本上我在顶部定义它们)
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 更改为类的实际名称后,我得到以下信息:
在第 17 行调用 C:\xampp\htdocs\oop\index.php 中未定义的方法 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);
}
}
}