这里有一个名为DB的类,用于准备一个pdo语句,然后对pdo对象执行select
、insert
等。在这里,我试图insert
从html表单中收集的一些数据。但当我执行代码时,它会给我在问题中提到的错误。getInstance()
和insert()
都是公共静态函数。有人能帮我解决这个问题吗?
class DB{
private static $_instance=null;
private $pdo,
$query,
$error=false,
$results,
$count=0;
private function __construct(){
try{
$this->pdo=new PDO('mysql:host='.Config::get('mysql/host').';dbname='.Config::get('mysql/db'),Config::get('mysql/user'),Config::get('mysql/password'));
}catch(PDOException $e){
echo $e->getMessage();
}
}
public static function getInstance(){
if(!isset(self::$_instance)){
self::$_instance=new DB();
}
return self::$_instance;
}
private function bind($val){
$i=1;
foreach($val as $data){
$this->query->bindValue($i,$data);
}
$i++;
}
public static function insert(){
$stmt='INSERT INTO users (username,password,name) VALUES (?,?,?)';
if($this->query=$this->pdo->prepare($stmt)){
$val=Validate::send();
$this->bind($val);
if($this->query->execute()){
return 'successfull';
}
}
}
}
我调用了它们,比如:
if(isset($_POST['submit'])){
$insert=DB::getInstance();
$insert::insert();
}
您在静态函数中使用$this。这就是你出错的原因。
删除"insert()"前面的"static",然后调用$insert->insert();