使用PHP访问类内的变量时遇到以下错误。
错误: 注意:未定义的变量:第28行/var/www/oditek.in/subhra/database.php中的pdo
致命错误:在第28行的/var/www/oditek.in/subhra/database.php中无法访问空属性
我在下面解释我的代码。
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_DATABASE', 'spesh');
/**
*
*/
class DBOperations
{
private $pdo;
function __construct()
{
$this->connect();
}
function __destruct() {
// $this->close();
}
public function connect() {
$dsn = "mysql:host=".DB_HOST.";dbname=".DB_DATABASE.";charset=utf8mb4";
$options = [
PDO::ATTR_EMULATE_PREPARES => false, // turn off emulation mode for "real" prepared statements
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //turn on errors in the form of exceptions
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //make the default fetch be an associative array
];
try {
$this->$pdo = new PDO($dsn, DB_USER, DB_PASSWORD, $options);
} catch (Exception $e) {
error_log($e->getMessage());
exit('Something weird happened'); //something a user can understand
}
}
public function db_insert($table,$values, $columns=array()){
if($table=="" || $values==""){
return false;
}
$columnstr=$valuestr="";
$valprepArr="";
if(count($columns)>0){
$columnstr=implode(",", $columns);
$columnstr="(".$columnstr.")";
}
foreach($values as $key=>$val){
if($valuestr !=""){
$valuestr.=",?";
}else{
$valuestr.="?";
}
array_push($valprepArr, $val);
}
$sql = "INSERT INTO ".$table." ".$columnstr." VALUES (".$valuestr.")";
$stmt = $this->$pdo->prepare($sql);
$stmt->execute($valprepArr);
return $this->$pdo->lastInsertId();
$stmt = null;
}
}
?>
在类文件中,我遇到此错误,我想解决这个问题。
答案 0 :(得分:2)
此行:
$this->$pdo = new PDO($dsn, DB_USER, DB_PASSWORD, $options);
应为:
$this->pdo = new PDO($dsn, DB_USER, DB_PASSWORD, $options);
在您使用$this->$pdo
的任何地方都应该是$this->pdo
更多信息here
答案 1 :(得分:0)
错误:注意:未定义的变量:pdo in /var/www/oditek.in/subhra/database.php,第28行
解决方案:第28行$this->$pdo
应该是$this->pdo
致命错误:无法访问中的空属性 /var/www/oditek.in/subhra/database.php,第28行
在$this
之后,需要调用在类中定义的属性或方法或函数,或者在其中创建$this
对象的地方。