Mysql
 sql >> база данни >  >> RDS >> Mysql

Изграждане на динамична заявка за PDO

Ще ви трябва отделен $params параметър към вашия select метод. Позволих си да осигуря настройки по подразбиране за параметрите на метода. Подобно на бележки @userXxxx, нямате нужда от транзакция само за да направите SELECT .

<?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);

Бележки:

  • Ако наистина искате, можете да добавите допълнителни параметри на метода, които да съответстват на цялата гъвкавост на PDOStatement::fetchAll .
  • Не съм сигурен какво имаш предвид за $dbFields като „полета плюс VALUES“. Можете ли да обясните?

[Редактиране]

Може да искате да разгледате документите/примерите за PDOStatement::execute , тъй като изглежда, че това е мястото, където вашето объркване се корени - по-специално $input_parameters параметър на метода.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Попълване на HTML/PHP падащо меню въз основа на първата селекция от падащо меню

  2. Двигателят за съхранение на масата не поддържа ремонт. InnoDB или MyISAM?

  3. Как да дефинирате уникален индекс на множество колони в sequelize

  4. Въпрос за най-добра практика за MySQL:подреждане по идентификатор или дата?

  5. Преобразувайте двоичен в десетичен с помощта на MySQL