Zend безопасные SQL-запросы? - PullRequest
2 голосов
/ 08 февраля 2011

Мне было интересно, безопасно ли что-то подобное в Zend:

$db = Zend_Registry::get('db');
$query = "SELECT * FROM tags t JOIN posts_tags pt ON pt.tag_id = t.tag_id where pt.post_id = " . $postid;
$select = $db->query();

Я не проверяю содержимое $postid здесь.

Zend делает это автоматически, когдавы делаете запросы следующим образом:

$db = Zend_Registry::get('db');
$select = $db->select();
$select->from(array('p' => 'posts'))
    ->join(array('u' => 'users'), 'u.user_id = p.post_userid')
    ->where('p.post_id = ?', $postid);

Но мне не нравится такой способ работы, просто написание запросов для меня гораздо быстрее.Так должен ли я бежать вручную или это сделано для меня?И какие самые простые способы сделать это?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Если вы не хотите использовать Zend_Db_Select, вы можете сделать:

$select = $db->query("SELECT * FROM tags t JOIN posts_tags pt ON pt.tag_id = t.tag_id where pt.post_id = ?", array($postid));

Где 2-й параметр - это массив значений, которые нужно поместить в заполнители.Смотри: http://framework.zend.com/manual/en/zend.db.statement.html

1 голос
/ 08 февраля 2011

Zend не может экранировать вашу переменную, потому что никогда ее не видит. Ваша переменная добавляется к строке, а метод $ db-> query позволяет увидеть строку в целом.

Я не думаю, что метод query () в любом случае выполняет какую-либо очистку.

...