1

次のSQLクエリがあります:

SELECT `ka`.`id`, COUNT(kk.id) AS `clicks` FROM `karriere_anzeige` AS `ka` LEFT JOIN `karriere_klicks` AS `kk` ON `ka`.`id` = `kk`.`id_anzeige` WHERE (ka.id_kunde = '616') GROUP BY `ka`.`id`

phpMyAdmin でこのクエリを実行すると、適切な結果が得られます。fe:

ID | クリック

4803 | 75

4822 | 144

ただし、この試み:

$rowset = $db->fetchAll($select);

次の行セットを返します。

array(2) {
    [0] => array(2) {
        ["id"] => string(4) "4803"
        ["clicks"] => string(1) "0"
    }
    [1] => array(2) {
        ["id"] => string(4) "4822"
        ["clicks"] => string(1) "0"
    }
}

$db は Zend_Db_Adapter_Pdo_Mysql オブジェクトです

LEFT JOIN の代わりに INNER JOIN を実行すると、phpMyAdmin で SQL クエリを実行すると、いくつかの行が返されます。上記のように Zend Framework で同じことを行うと、ゼロ行が返されます。私は一般的に何か間違っていると思いますが、それが何であるかわかりません。誰かが私にヒントを与えることができますか?

4

1 に答える 1

0

文字列を SQL として渡そうとする場合は、次のようにしてください。

//This assumes access from a controller/action
$db = Zend_Db_Table::getDefaultAdapter();
$sql = "SELECT `ka`.`id`, COUNT(kk.id) AS `clicks` FROM `karriere_anzeige` AS `ka` LEFT JOIN `karriere_klicks` AS `kk` ON `ka`.`id` = `kk`.`id_anzeige` WHERE (ka.id_kunde = '616') GROUP BY `ka`.`id`";
$stmt = new Zend_Db_Statement_PDO($db, $sql);
$stmt->execute();

Zend_Db_Selectオブジェクトを作成してテーブルをクエリすることもできます。

于 2012-04-22T09:09:29.280 に答える