Zend - нужно ли использовать quote () при вставке / обновлении? - PullRequest
3 голосов
/ 14 октября 2010

Я занимаюсь разработкой приложения, которое позволяет пользователям вводить данные в поля VARCHAR (255) в mySQL, поэтому безопасность является серьезной проблемой.

У меня проблемы с пониманием quote ().Если я использую кавычку ('test'), данные возвращаются как '\' test \ '' в SELECT, что нежелательно.Как мне удалить эти данные из кавычек?

Если я обойду quote (), я могу заглянуть в phpmyadmin и увидеть 'test', так что, похоже, Zend не экранирует кавычки для меня автоматически ...

Мой код выглядит примерно так:

    public function getDbTable() {
        if (null === $this->_dbTable) {
           $this->setDbTable(new Zend_Db_Table($this->_tableName));
        }
        return $this->_dbTable;
    }

    private function insert($anObject) {
        $row['cell1'] = $anObject->getCell1();
        $row['cell2'] = $anObject->getCell2();

         $this->getDbTable()->insert($row);
    }

Должен ли я использовать quote () около $ anObject-> getCell1 () и т. Д. При вставке и обновлении?

Ответы [ 2 ]

5 голосов
/ 14 октября 2010

Нет, Zend делает это за вас.

Если я обойду цитату (), я могу заглянуть в phpmyadmin и увидеть 'test', поэтому не похоже, что Zend цитирует меня автоматически...

Хе-хе, если вы видите 'test' (с кавычками) в PMA, это означает, что Zend успешно процитировал вашу строку.Если бы Zend не заключил его в кавычки - вы бы увидели исключение в отношении неправильного запроса.; -)

0 голосов
/ 14 октября 2010

Zend_Db_Table_Abstract :: insert использует Zend_Db_Adapter_Abstract :: insert для выполнения вставки.Zend_Db использует подготовленный оператор , поэтому при использовании метода вставки нет риска внедрения SQL.Вам не нужно заключать в кавычки ваши значения, прежде чем передавать их для вставки.

...