  |
1 | 1 | | <?php |
| |
2 | 2 | | /* |
  |
3 | | - | $Id: mysql.php 5 2005-01-31 01:40:15Z hpdl $ |
| |
| 3 | + | $Id: mysql.php 48 2005-03-08 23:27:48Z hpdl $ |
|
4 | 4 | | |
| |
5 | 5 | | osCommerce, Open Source E-Commerce Solutions |
| |
6 | 6 | | http://www.oscommerce.com |
| |
|
|
 |
… |
|
226 | 226 | | if (strpos($sql_query, 'SQL_CALC_FOUND_ROWS') !== false) { |
| |
227 | 227 | | $bb = $this->query('select found_rows() as total'); |
| |
228 | 228 | | } else { |
  |
229 | | - | $total_query = substr($sql_query, 0, strpos($sql_query, ' limit')); |
| |
230 | | - | $bb = $this->query('select count(' . $select_field . ') as total ' . substr($total_query, strpos($sql_query, 'from '))); |
| |
| 229 | + | $total_query = substr($sql_query, 0, strpos($sql_query, ' limit ')); |
| |
| 230 | + | |
| |
| 231 | + | $pos_to = strlen($total_query); |
| |
| 232 | + | $pos_from = strpos($total_query, ' from '); |
| |
| 233 | + | |
| |
| 234 | + | if (($pos_group_by = strpos($total_query, ' group by ', $pos_from)) !== false) { |
| |
| 235 | + | if ($pos_group_by < $pos_to) { |
| |
| 236 | + | $pos_to = $pos_group_by; |
| |
| 237 | + | } |
| |
| 238 | + | } |
| |
| 239 | + | |
| |
| 240 | + | if (($pos_having = strpos($total_query, ' having ', $pos_from)) !== false) { |
| |
| 241 | + | if ($pos_having < $pos_to) { |
| |
| 242 | + | $pos_to = $pos_having; |
| |
| 243 | + | } |
| |
| 244 | + | } |
| |
| 245 | + | |
| |
| 246 | + | if (($pos_order_by = strpos($total_query, ' order by ', $pos_from)) !== false) { |
| |
| 247 | + | if ($pos_order_by < $pos_to) { |
| |
| 248 | + | $pos_to = $pos_order_by; |
| |
| 249 | + | } |
| |
| 250 | + | } |
| |
| 251 | + | |
| |
| 252 | + | $bb = $this->query('select count(' . $select_field . ') as total ' . substr($total_query, $pos_from, ($pos_to - $pos_from))); |
  |
231 | 253 | | } |
| |
232 | 254 | | |
| |
233 | 255 | | return $bb->value('total'); |