我正在尝试为sql查询创建数据库类。
我可以把基本的积垢东西,但当我添加一些数据库 lastInsertId()
返回0
mysql类中的db连接
public function connect() {
return new PDO("mysql:host=$this->db_host;dbname=$this->db_name",
$this->db_username,$this->db_password);
}
数据库类中的save方法
public function save()
{
$values = [];
$keys = [];
$marks = [];
foreach ($this->data as $key => $value) {
array_push($keys, $key);
array_push($marks, '?');
array_push($values, $value);
$this->__unset($key);
}
$keys = implode(',', $keys);
$marks = implode(',', $marks);
try {
$query = $this->connect()->prepare("INSERT INTO $this->table ($keys) VALUES ($marks)");
$query->execute($values);
return $this->connect()->lastInsertId();
} catch (PDOException $e) {
return $e->getMessage();
}
}
我正在使用这个类,它成功地将数据保存到数据库,但仍然返回0
$query = new Database('table');
$query->foo = "bar";
$data = $query->save();
echo $data;
// 0
我在这里错过了什么?我该怎么修?
1条答案
按热度按时间tzxcd3kk1#
每次调用时都会创建一个新的连接对象
connect
,因此需要将原始调用存储在变量中以便以后重用。见下表:编辑-我错过了方法的链接。在这种情况下,将它们分开比较有利。见下表:
你得跑了
lastInsertId
而不是事先准备好的声明。