我有3个文件:dbconnect(这里是$ pdo的声明),core.php(带有要管理的类的文件)和test.php。 我想从DB接收数据,但我有错误: 注意:未定义的变量:第24行的C:\ xampp \ htdocs \ project \ core.php中的pdo
在dbconnect中,$ pdo在try catch中,但在此之前我把:$ pdo = null(使变量可访问)但它不起作用。 dbconnect ---> core.php(这里的错误)---> test.php的;
//dbconnect.php
<?php
$mysql_host = 'localhost';
$username = 'root';
$password = '';
$database = 'db';
$pdo = null;
try {
$pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';charset=utf8', $username, $password );
}
catch(PDOException $e) {
echo 'Połączenie nie mogło zostać utworzone.<br />';
}
?>
//core.php
require_once('cms/dbconnect.php');
class getCore{
public $link_allegro;
public $link_facebook;
function getLinks(){
$query= $pdo->query('SELECT `url` FROM `links` WHERE `title` = "facebook"');
$row = $query->fetch();
$this->link_facebook = $row["url"];
$query= $pdo->query('SELECT url FROM links WHERE title = "allegro"');
$row = $query->fetch();
$this->link_allegro = $row["url"];
$query->closeCursor();
}
}
//test.php
<?php
require_once('core.php');
$tmp = new getCore;
$tmp->getLinks();
echo $tmp->link_allegro;
echo $tmp->link_facebook;
?>
任何人都可以解决这个问题?感谢。
答案 0 :(得分:1)
这是一个范围问题。 $ pdo不存在于你的getCore类中。 您可以创建DatabaseConnect类来管理数据库访问。
您可以将此基本类用于数据库连接:
<?php
class DatabaseConnect {
private $mysql_host = 'localhost';
private $username = 'root';
private $password = '';
private $database = 'db';
private $pdo = null;
public function getPdo(){
return $this->pdo;
}
public function __construct(){
try {
$this->pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';charset=utf8', $username, $password );
}
catch(PDOException $e) {
echo 'Połączenie nie mogło zostać utworzone.<br />';
}
}
}
?>
您可以在调用DatabaseConnect对象的其他类中获取PDO实例 - &gt; getPdo(): - 实现新的DatabaseConnect。 - 使用类的methof获取PDO实例。
就像那样:
$databaseConnect = new DatabaseConnect();
$pdo = $databaseConnect->getPdo();
下一个代码:
//core.php
require_once('cms/dbconnect.php');
class getCore{
public $link_allegro;
public $link_facebook;
function getLinks(){
$databaseConnect = new DatabaseConnect();
$pdo = $databaseConnect-getPdo();
$query= $pdo->query('SELECT `url` FROM `links` WHERE `title` = "facebook"');
$row = $query->fetch();
$this->link_facebook = $row["url"];
$query= $pdo->query('SELECT url FROM links WHERE title = "allegro"');
$row = $query->fetch();
$this->link_allegro = $row["url"];
$query->closeCursor();
}
}
//test.php
<?php
require_once('core.php');
$tmp = new getCore;
$tmp->getLinks();
echo $tmp->link_allegro;
echo $tmp->link_facebook;
答案 1 :(得分:0)
您需要将$ pdo作为输入传递给getLinks()函数,以使其可供使用。你可以试试getLinks($ pdo)