sql >> Database >  >> RDS >> Mysql

PHQL WHERE xxx IN () kan maar 1 gegevens krijgen

Aangezien er weinig voorbeelden zijn die werken met zowel PDO als PHQL, hier en hier dat past bij uw voorbeeld, er is nog een benadering mogelijk in het Phalcon queryBuilder-mechanisme:

$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 methode is voor zover ik weet alleen bereikbaar via queryBuilder en het werkt op precies dezelfde manier als de genoemde PDO-voorbeelden IN (?, ?, ?) . Maar u hoeft het niet met de hand te implementeren.

U kunt ook een deel van het maken van PHQL overslaan en direct rijden om SQL-query's te maken, maar tegen de kosten van het maken van eigen validaties.

$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. Hex-tekens in regexp-overeenkomsten in mysql

  2. c# Problemen met mysql:Onjuiste tekenreekswaardecode 1366 voor kolom in rij 1

  3. ORA-00900:ongeldige SQL-instructie - bij het uitvoeren van een procedure in oracle 10g

  4. Bouw een nieuwsbriefsysteem met PHP en MySQL