fork download
  1. <?php
  2.  
  3. 1) простой подход — на коленке собирать запрос и аргументы к нему:
  4.  
  5. $param = array();
  6. $where = array();
  7.  
  8. if (надо искать по году) {
  9. $where [] = "band.year = :year";
  10. $param[':year'] = $year;
  11. }
  12.  
  13. а потом объединять условие:
  14.  
  15. $whereAsString = implode(' AND ', $where);
  16.  
  17. 2) правильный подход — использовать тут Query Builder который специально придуман для сбора запросов по кусочкам:
  18.  
  19. $query = $db->select()->from('bands');
  20.  
  21. if (ищем по году) {
  22. $query->where('band.year = ?', $year);
  23. }
  24.  
  25. Заметь что с Query Builder ты избавляешься от ручной возни с кусками SQL, но при этом данные подставляются через безопасные плейсхолдеры. QB например есть в Zend Framework: http://f...content-available-to-author-only...d.com/manual/1.12/ru/zend.db.select.html
  26.  
  27. Есть QB в составе Doctrine DBAL: http://d...content-available-to-author-only...s.org/en/latest/reference/query-builder.html
  28.  
  29. Вот не очень уклюжий QB от Юи: http://w...content-available-to-author-only...k.com/doc/guide/1.1/ru/database.query-builder
  30.  
  31. Есть такая библиотека, но я с ней не работал: http://f...content-available-to-author-only...o.com/documentation.html#features
  32.  
  33. Заметь также что если запрос неизменный то удобнее писать его как есть, без QB. Он нужен именно для сборки по частям.
Runtime error #stdin #stdout #stderr 0.01s 20592KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
PHP Parse error:  syntax error, unexpected ')' in /home/Z9trGw/prog.php on line 3