当不在对象的上下文错误中时使用 $this
using $this when not in object's context error
这里我有 class 调用的 DB,它用于准备 pdo 语句,然后在 PDO 上执行 select
、insert
等 object.Here 我正在尝试 insert
从 html form.But 收集的一些数据,当我执行代码时,它给了我我在问题中提到的错误。 getInstance()
和 insert()
都是 public 静态 function.Can 谁能帮我解决这个问题?
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();
这里我有 class 调用的 DB,它用于准备 pdo 语句,然后在 PDO 上执行 select
、insert
等 object.Here 我正在尝试 insert
从 html form.But 收集的一些数据,当我执行代码时,它给了我我在问题中提到的错误。 getInstance()
和 insert()
都是 public 静态 function.Can 谁能帮我解决这个问题?
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();