sql >> Database >  >> RDS >> Mysql

Dynamische query-opbouw voor PDO

Je hebt een aparte $params . nodig parameter naar uw select methode. Ik ben zo vrij geweest om standaardwaarden voor de methodeparameters op te geven. Net als @userXxxx-opmerkingen, heb je geen transactie nodig om een ​​SELECT te doen .

<?php

class db {

    public $connection; //PDO
    public $dbFields; // This is an array of the fields plus VALUES

    public function select($where = '1', $params = array(), $limit = '', $fetchStyle = PDO::FETCH_ASSOC) { //fetchArgs, etc
        $fields = implode(', ', $this->dbFields);

        //create query
        $query = "SELECT $fields FROM {$this->table} WHERE $where $limit";

        //prepare statement
        $stmt = $this->connection->query($query);

        $stmt->execute($params);

        return $stmt->fetchAll($fetchStyle);
    }

    //...
}


$where = 'userId IN(:userId1, :userId2)';
$params = array(':userId1' => 111, ':userId2' => 2222);
$db->select($where, $params);

Opmerkingen:

  • Als je echt wilt, kun je extra methodeparameters toevoegen om te passen bij alle flexibiliteit van PDOStatement::fetchAll .
  • Ik weet niet zeker wat je bedoelt met $dbFields zijnde "velden plus WAARDEN". Kun je het uitleggen?

[Bewerken]

Misschien wil je de documenten/voorbeelden bekijken voor PDOStatement::execute , aangezien daar uw verwarring leek te zijn geworteld - met name de $input_parameters methode parameter.



  1. MySQL INTERVAL Minuten

  2. Lucene.Net configureren met SQL Server

  3. 4 manieren om dubbele rijen te selecteren in MariaDB

  4. SQL - WHERE-voorwaarde op SUM()