Zend Framework - Обновите строку базы данных с помощью WHERE и AND - PullRequest
5 голосов
/ 21 сентября 2010

Чтобы использовать where в обновлении строки таблицы MySQL в Zend Framework, у меня есть что-то вроде:

public function updateBySiteId(array $data, $id) {
        $table = $this->gettable();

        $where = $table->getAdapter()->quoteInto('site_id = ?', $id);

        return $table->update($data, $where);
    }

, и это, я ожидаю, дает мне что-то вроде ...

UPDATE foo SET ponies = 'sparkly' WHERE site_id = '1'

Но что, если я хочу создать следующее:

UPDATE foo SET ponies = 'sparkly' WHERE site_id = '1' AND type = 'zombie'

В руководстве я не вижу, как это сделать с quoteInto (или quote или каким-либо другим безопасным методом ... который может простозначит я смотрю не в том месте но ... вздох ).

1 Ответ

9 голосов
/ 21 сентября 2010

Поскольку метод table update () проксирует метод update () адаптера базы данных, вторым аргументом может быть массив выражений SQL.Выражения объединяются в виде логических терминов с использованием оператора AND.

http://framework.zend.com/manual/en/zend.db.table.html

$data = array(
'updated_on'      => '2007-03-23',
'bug_status'      => 'FIXED'
);
$where[] = "reported_by = 'goofy'";
$where[] = "bug_status = 'OPEN'";
$n = $db->update('bugs', $data, $where);

Результирующий SQL:

UPDATE "bugs" SET "update_on" = '2007-03-23', "bug_status" = 'FIXED' WHERE ("reported_by" = 'goofy') AND ("bug_status" = 'OPEN')

http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.write.update

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...