Napisalem skrypt ktory ma automatycznie pobierac dane po wybraniu przez usera parametro wna podstawie nazwy akcji itp itd.
Chcialbym dynamicznie pobierac dane ale za kazdym razem wyrzucami blad sql i zastanawiam jak moge inaczej ugryzc problem.
Na moje oko to skrypt przetwarza "doslownie" to co zostalo napisane z tad "->".
Jakies sugestie?
<?php class My_Database_Queries_jacketQuery { private $params = []; public function __construct($params) { $this->params[] = $params; } public function loadResults() { # $db = new Application_Model_DbTable_Jacket(); $adapter = Zend_Db_Table::getDefaultAdapter(); $select = new Zend_Db_Select($adapter); $joinInner = ""; foreach ($this->params[0] as $key => $val) { $joinInner.= "->join inner('product_" . $key . "', 'product_id' = 'product_" . $key . "." . $key . "_id')" . "</br>"; foreach ($val as $k => $v) { $temp [] = 'product_' . $key . '.' . $v . ' = 1'; } } $joinInner.="->where('" . $query[0] . "')"; $select.=$joinInner; $result = $adapter->fetchAll($select); return $result; } }
Taki blad
Message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '->join inner('product_color', 'product_id' = 'product_color.color_id')
->joi' at line 1, query was: SELECT `jacket`.`product_id` FROM `jacket`->join inner('product_color', 'product_id' = 'product_color.color_id')
->join inner('product_size', 'product_id' = 'product_size.size_id')
->where('product_color. black = 1 or product_size.large = 1')
Na moje oko to skrypt przetwarza "doslownie" to co zostalo napisane z tad "->".