需要帮助PHP SQL(PDO)初学者

时间:2013-11-15 04:14:23

标签: php sql

我正在尝试使用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;
}
}

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

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

2 个答案:

答案 0 :(得分:3)

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

使用new 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...';
}

答案 1 :(得分: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());
           }
      }  
 }

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

相关问题