我收到此错误:在第25行的非对象上调用成员函数prepare()。 我已经标记了它所指的第25行;请有人请检查并告诉我哪里错了?我尝试了所有可能的方法,但无法理解。
class db
class db {
public $connect;
private $username = "root";
private $password = "";
private $dns="mysql:host=localhost;dbname=etrharam_db";
private $method=array(PDO::MYSQL_ATTR_INIT_COMMAND=>"set name utf8");
public function connection(){
$connect= new PDO($this->dns,$this->username,$this->password,$this->method);
return $connect;
}/*connection*/
public function Idu($query,$data){
$pre=$this->connect->prepare($query);
foreach($data as $index=>$val){
$pre->bindValue($index+1,$val);
}
$pre->execute();
}/*idu*/
public function Select($query,$data){
$pre=$this->connect->prepare($query);
foreach($data as $index=>$val){
$pre->bindValue($index+1,$val);
}
$pre->execute();
$res=$pre->fetchAll(PDO::FETCH_ASSOC);
return $res;
}/*select*/
}/*db*/
test.php的
include ('oop.php');
$oop= new db;
$query="SELECT * FROM `newcoll_tbl` WHERE id=?";
$data=array('1');
$res=$oop->Select($query,$data);
print_r($res);
有什么问题? 提前谢谢。
答案 0 :(得分:0)
您的变量$connect
为空,因为它从未填充过。您的函数connection
永远不会被调用,这就是您收到此错误的原因。
要解决此问题,您可以做两件事:
$oop->connection();
connection
的名称更改为__construct
,以便在调用$oop= new db();
时自动运行我会推荐第二个选项