Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PHQL WHERE xxx IN () chỉ có thể lấy 1 dữ liệu

Vì có một vài ví dụ làm việc với cả PDO và PHQL, đây tại đây phù hợp với ví dụ của bạn, có một cách tiếp cận nữa có thể thực hiện được trong cơ chế Phalcon queryBuilder:

$builder = $this->modelsManager->createBuilder();
$builder->addFrom('Application\Entities\KeywordsTrafficReal', 'tr')
        ->leftJoin('Application\Entities\Keywords', 'kw.id = tr.keyword_id', 'kw')
        ->inWhere('keyword_id', self::$keywords) // <<< it is an array!
        ->betweenWhere('traffic_date', self::$daterange['from'], self::$daterange['to']);

inWhere Phương thức chỉ có thể truy cập được qua queryBuilder theo như tôi biết và nó hoạt động chính xác theo cách giống như các ví dụ PDO đã đề cập IN (?, ?, ?) . Nhưng bạn không cần phải thực hiện nó bằng tay.

Bạn cũng có thể bỏ qua một phần của việc tạo PHQL và lái trực tiếp để tạo truy vấn SQL, nhưng với chi phí thực hiện các xác nhận riêng.

$realModel = new KeywordsTrafficReal();

$sql = sprintf('SELECT * '
            .  'FROM keywords_traffic_real tr '
            .  'LEFT JOIN keywords kw '
            .  'ON kw.id = tr.keyword_id '
            .  'WHERE tr.keyword_id IN(%s) '
            .  "AND traffic_date BETWEEN '%s' AND '%s' ",
        join(',', self::$keywords), self::$daterange['from'], self::$daterange['to']);

$results = new \Phalcon\Mvc\Model\Resultset\Simple(null, $realModel, $realModel->getReadConnection()->query($sql));



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển đổi Lat Long sang địa chỉ trong php với json api?

  2. Sự nhầm lẫn mệnh đề WHERE với PDO

  3. PHP Pthreads - sử dụng mysqli

  4. php + mysql:chèn một mảng php vào mysql

  5. Lỗi:SQLSTATE [42000]:Lỗi cú pháp hoặc vi phạm quyền truy cập với cakePHP