-1

我正在尝试使用 PDO 创建一个 SQL 表。

这是add.php:

    // include db connect class
require_once __DIR__ . '/db_connect.php';

    // connecting to db
$db = new DB_CONNECT();
echo "Connexion success...";


$sq = DB_CONNECT::$con->query($table);
if ($sq) {
    echo 'Table created...';
}
?> 

这是连接类 db_connect.php:

class DB_CONNECT {

    // constructor
    function __construct() {
        // connecting to database
        return $this->connect();

    }

    /**
     * Function to connect with database
     */
    function connect() {
        // import database connection variables
        require_once __DIR__ . '/db_config.php';

    // Connecting to mysql database and selecting database
    try {
        $con = new PDO(DB_DSN, DB_USER, DB_PASSWORD);
    } catch (Exception $e) {
        die('Erreur : ' . $e->getMessage());
    }

    // returing connection cursor
    return $con;
}
}

当我尝试查询数据库时,我收到以下错误消息:

连接成功...致命错误:访问未声明的静态属性:第 15 行 /public_html/toutain/add.php 中的 DB_CONNECT::$con

4

2 回答 2

3

这段代码混合了很多方法。它目前只是一个封装在类中的实用函数。

实例化 withnew DB_CONNECT;是没有意义的,因为new PDO您方法中的句柄没有保存为属性,例如$this->con.

使用return $con实际上不会通过/通过构造函数返回 PDO 实例。你new DB_CONNECT只会返回一个DB_CONNECT带有局部$con变量的对象;因此无法实际调用任何 PDO 方法。

目前您只能将其用作:

$pdo = DB_CONNECT::connect();

$pdo->query()然后从那里调用。

// connecting to db
$pdo = DB_CONNECT::connect();

$result = $pdo->query($table);
if ($result) {
    echo 'Table created...';
}
于 2013-11-15T04:29:23.513 回答
0

这条线

 $sq = DB_CONNECT::$con->query($table);

应该

 $sq = $db->query($table);

你的类定义应该是

 require_once __DIR__ . '/db_config.php';

 class DB_CONNECT extends PDO {

      public function __construct() {
           try{
               parent::__construct(DB_DSN, DB_USER, DB_PASSWORD);
           }catch(PDOException $e){
               die('Erreur : ' . $e->getMessage());
           }
      }  
 }

我在工作中使用了一个类似的类,所以这个构造函数应该适合你,你可以删除连接函数

于 2013-11-15T04:19:10.727 回答