[英]pdo wrapper last id return 0
你好,我正在嘗試使用 php mvc 創建一個項目,我在它上面使用了 pdo 包裝器 package 主要問題是當我使用 lastinsertid 它總是返回 0 我知道我應該使用相同的連接但在我的情況下使用 package 我該怎么做它??
這是 model 代碼
<?php
namespace MVC\core;
use Dcblogdev\PdoWrapper\Database as Database;
class model{
static function db(){
$options = [
//required
'username' => 'root',
'database' => 'gallery',
//optional
'password' => '',
'type' => 'mysql',
'charset' => 'utf8',
'host' => 'localhost',
'port' => '3306'
];
return $db = new Database($options);
}
}
?>
在這里,我將 pdo 與我的 function 一起使用
<?php
namespace MVC\model;
use MVC\core\model;
use MVC\core\session;
class adminpost extends model {
function getCategory(){
return model::db()->rows("SELECT * FROM `category` WHERE id NOT in (SELECT parent_id from category)");
}
function getposts(){
return model::db()->rows("select * from posts");
}
function getpostsByCategory($id){
return model::db()->rows("select * from posts where category_id = ?",[$id]);
}
function insertimage($data){
return model::db()->insert('images', $data);
}
function insertpost($data){
return model::db()->insert('posts', $data);
}
function lastid(){
return model::db()->lastInsertId();
}
}
?>
這是 controller,我使用 model function
class adminpostcontroller extends controller{
function postinsert(){
$post = new adminpost;
$data = [
'title'=>$_POST['title'],
'text'=>$_POST['text']
];
$insert = $post->insertpost($data);
}
}
我假設每次調用model::db()
時,由於new Database($options)
都會建立一個新連接,您需要通過 static 參考在操作期間創建並保留一個連接或其他最合適的方式。
一種“便宜”的方法是
static $db;
return isset( $db ) ? $db : $db = new Database($options);
其他方法可能是在您的 class 中創建一個引用,例如static $db;
並使用static::$db
class model{
static $db;
其次是
return isset( static::$db ) ? static::$db : static::$db = new Database($options);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.