【问题标题】:OOP, PDO & MYSQL UsageOOP、PDO 和 MYSQL 用法
【发布时间】:2016-12-27 18:32:13
【问题描述】:

我无法在我的课程上使用我的 PDO mysql 连接。你能帮我修改我的代码吗? (首先,它连接数据库并检查会话以检测__construct函数中的成员名称,然后写入最新消息..)

class Content {

public function __construct() {

public $db = new PDO("mysql:host=localhost;dbname=XXXX;
charset=utf8", "XXXX", "XXXX");

$db->exec('SET NAMES `UTF-8`');

if ($_SESSION[user_id])  {  
$query = $db->query("SELECT count(id),name FROM members 
WHERE id = '$_SESSION[user_id] LIMIT 1")->fetch(); }

 }

public function WriteContent() {
$news = $db->query("SELECT * FROM news ORDER BY id DESC LIMIT 1")->fetch();
echo 'hi'.$query[name].'<br/><br/>'.$news[headline].'<br/>'.$news[detail];
}
}

【问题讨论】:

  • php 显示什么错误?
  • 空白页:S @Gerald Chablowski
  • 你能不能只在你的contructer上调用pdo而不是使用注入。此外,您应该使用 new \Pdo(),就像它引用 javascript 的名称空间一样。
  • 您是否在 oop 类使用中提供了一个非常基本的 pdo mysql 连接示例。 (1次mysql连接,然后在所有类中使用$db变量)

标签: php mysql oop pdo


【解决方案1】:

试试这个: 您缺少 $_SESSION[user_id] 的引号和 ->fetch($argument); 中的参数 在使用 pdo 时,你应该使用 try catch,所以如果你有错误,你会知道原因

class Content {

public function __construct() {

public $db = new PDO("mysql:host=localhost;dbname=XXXX;
charset=utf8", "XXXX", "XXXX");

$db->exec('SET NAMES `UTF-8`');

if (isset($_SESSION['user_id'])){  
    $userId=$_SESSION['user_id'];
    $query = $db->query("SELECT count(id),name FROM members 
    WHERE id = $userId LIMIT 1")->fetch(PDO::FETCH_ASSOC); 
    }   
}

public function WriteContent() {
$news = $db->query("SELECT * FROM news ORDER BY id DESC LIMIT 1")->fetch(PDO::FETCH_ASSOC);
echo 'hi'.$query[name].'<br/><br/>'.$news[headline].'<br/>'.$news[detail];
}
}

使用 PDO 和 OOP 的连接示例

class Connection{
    protected $con; //connection variable

    public function Conexion(){
        try{
            $this->con=new PDO("mysql:host=localhost;dbname=Youtube","root","");
            $this->con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);     
            $this->con->exec("SET CHARACTER SET UTF8");
            return $this->con;
        }
        catch (PDOException $e){
            echo "Error: " . $e->getMessage() . "<br />Line: " .   $e->getLine();
        }
    }
}

每次你需要连接时,你都必须做 require('connetion.php'); 并在其他类中使用它:

Class ViewDataBaseResults extends Connection{
    public function ViewDataBaseResults(){
        parent::__construct(); //You inherit the construct here
    }
    public function view(){
        $result=$this->con->query("SELECT * FROM TABLE"); //
        if($array=$result->fetch(PDO::FETCH_ASSOC));{
             echo "Hi: " . $array['name'] . "<br />";
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2016-01-08
    • 1970-01-01
    • 2015-07-22
    • 2013-03-12
    • 2018-12-03
    • 2013-09-28
    • 2016-08-10
    • 2018-10-20
    相关资源
    最近更新 更多