如何使用 pdo 数据库连接功能进行查询?

How to do queries with pdo db connection function?

我看了太多问题和答案,但不能确定。 我有 2 个问题

1.I turned my db connection into a function and I am not sure if its safe ?

define('DB_SERVER', 'localhost'); 
define('DB_USERNAME', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_NAME', 'demo'); 

function DB()
{
    try {
        $pdo = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_NAME.'', DB_USERNAME, DB_PASSWORD);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $pdo;
    } catch (PDOException $e) {
        return "Error!: " . $e->getMessage();
        die();
    }
}

2.is my query done right way ?

查询:

try {
    $pdo = DB();
    $stmt = $pdo->prepare("SELECT * FROM settings"); 
    $stmt->execute();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                        $c = htmlspecialchars($row['site_url']);
                        $e = filterString($row['contact']);
    } 
    unset($stmt);   
    } catch (PDOException $e) {
            exit($e->getMessage());
        }

感谢您的帮助

也许只保留一个连接,而不是打开多个数据库连接。您可以查看我创建的项目 PDOEasy 以使用 PDO 简化 MVC 或使用下面的静态示例。

class DB
{
     private $_connection;
     private static $_instance;

     public static function getInstance() {
         if(self::$_instance) return self::$_instance;
         self::$_instance = new self();
         return self::$_instance;
     }

     private function __construct() {
         $this->_connection = new PDO('mysql:host='.DB_SERVER.';dbname='.DB_NAME.'', DB_USERNAME, DB_PASSWORD, array(
              PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
              PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
              PDO::ATTR_EMULATE_PREPARES => false
         ));
     }

     public function getConnection() { return $this->_connection; }
}

可以这样使用:

$stmt = DB::getInstance()
            ->getConnection()
            ->Prepare('SELECT * FROM settings');

$stmt->execute();
foreach($stmt->fetchAll() as $row) {
    // ...
}