Как заключить в кавычки имена столбцов с Zend_Db? - PullRequest
6 голосов
/ 28 января 2012

Я использую key в качестве имени столбца в таблице MySQL.

Поскольку это зарезервировано, его необходимо правильно экранировать для использования в запросе:

… WHERE `key` = 'test'

Вручную это не проблема, но я использую Zend Framework и хочу, чтобы он правильно обрабатывал escape, например:

$table = new Application_Model_ATable();
$table->fetchRow ( $table->select()->where('key = ?','test') );

Итак, вопрос:

Как заключить в кавычки / экранировать имена столбцов с Zend_Db_Table?

Ответы [ 3 ]

4 голосов
/ 23 мая 2012

избегая инъекций MySQL с классом Zend_Db

Парень объясняет это здесь на самом деле, но плохо, просто вытащи цитату быстро ...

Любая другая часть этого выражения, которая должна быть заключена в кавычки или разделена это ваша ответственность. Например, если вы интерполируете какие-либо переменные PHP в выражении безопасность - ваша ответственность. Если у вас есть столбец имена, являющиеся ключевыми словами SQL, вам нужно самим разделить их quoteIdentifier (). Пример:

$select->where($db->quoteIdentifier('order').'=?', $myVariable)

Надеюсь, это поможет !!

1 голос
/ 25 июля 2013

При использовании заглавных букв необходимо заключать в кавычки имена столбцов. Полезно заключать эти имена в кавычки с помощью $ db-> quoteIdentifier ($ columnName), когда вы планируете переключать адаптер данных в будущем.

1 голос
/ 28 января 2012

попробуйте что-то вроде:

$table = new Application_Model_ATable();
$where = $table->getAdapter()->quoteInto('key = ?', 'test');
$table->fetchRow ( $where );

* - отрывок из ссылки Zend_Db_Table - *Примечание. Значения и идентификаторы в выражении SQL для вас не указаны.Если у вас есть значения или идентификаторы, которые требуют цитирования, вы несете ответственность за это.Используйте методы quote (), quoteInto () и quoteIdentifier () адаптера базы данных.

...