Rev 75 | Rev 77 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 75 | Rev 76 | ||
---|---|---|---|
Line 572... | Line 572... | ||
572 | * If provided, MUST start with ORDER BY or GROUP BY
|
572 | * If provided, MUST start with ORDER BY or GROUP BY
|
573 | * @param string $limit Limit (optional)
|
573 | * @param string $limit Limit (optional)
|
574 | * @param int $fetch_style
|
574 | * @param int $fetch_style
|
575 | * The mode that should be used for {@link PDOStatement::fetchAll()}.
|
575 | * The mode that should be used for {@link PDOStatement::fetchAll()}.
|
576 | * The default is {@link PDO::FETCH_ASSOC}.
|
576 | * The default is {@link PDO::FETCH_ASSOC}.
|
- | 577 | * @param bool $fetchAll
|
|
- | 578 | * If <code>true</code> (default), fetches all rows at once.
|
|
- | 579 | * You can set this to <code>false</code> in case of memory problems,
|
|
- | 580 | * in which case this function will return the prepared
|
|
- | 581 | * {@link PDOStatement} instead of the result array. You can then use
|
|
- | 582 | * {@link PDOStatement::fetch()} to get the returned rows iteratively.
|
|
- | 583 | * <var>fetch_style</var> will be ignored then, so that you can safely
|
|
- | 584 | * pass <code>null</code>, for example.
|
|
577 | * @return array
|
585 | * @return array|PDOStatement
|
578 | * @see Database::prepare()
|
586 | * @see Database::prepare()
|
579 | * @see PDOStatement::fetchAll()
|
587 | * @see PDOStatement::fetchAll()
|
580 | */
|
588 | */
|
581 | public function select($tables, $columns = null, $where = null, |
589 | public function select($tables, $columns = null, $where = null, |
582 | $order = null, $limit = null, $fetch_style = \PDO::FETCH_ASSOC) |
590 | $order = null, $limit = null, $fetch_style = \PDO::FETCH_ASSOC, |
- | 591 | $fetchAll = true) |
|
583 | {
|
592 | {
|
584 | if (is_null($columns)) |
593 | if (is_null($columns)) |
585 | {
|
594 | {
|
586 | $columns = array('*'); |
595 | $columns = array('*'); |
587 | }
|
596 | }
|
Line 621... | Line 630... | ||
621 | if (!is_null($limit)) |
630 | if (!is_null($limit)) |
622 | {
|
631 | {
|
623 | $query .= " LIMIT $limit"; |
632 | $query .= " LIMIT $limit"; |
624 | }
|
633 | }
|
625 | 634 | ||
- | 635 | $stmt = ($fetchAll |
|
626 | $stmt = $this->prepare($query); |
636 | ? $this->prepare($query) |
- | 637 | : $this->prepare($query, array(\PDO::ATTR_CURSOR => \PDO::CURSOR_SCROLL))); |
|
627 | 638 | ||
628 | $params = array(); |
639 | $params = array(); |
629 | 640 | ||
630 | if (is_array($where) && $this->_isAssociativeArray($where)) |
641 | if (is_array($where) && $this->_isAssociativeArray($where)) |
631 | {
|
642 | {
|
Line 667... | Line 678... | ||
667 | 678 | ||
668 | $errorInfo =& $this->_lastError; |
679 | $errorInfo =& $this->_lastError; |
669 | $errorInfo = $stmt->errorInfo(); |
680 | $errorInfo = $stmt->errorInfo(); |
670 | 681 | ||
671 | $result =& $this->_lastResult; |
682 | $result =& $this->_lastResult; |
- | 683 | ||
- | 684 | if ($fetchAll) |
|
- | 685 | {
|
|
672 | $result = $stmt->fetchAll($fetch_style); |
686 | $result = $stmt->fetchAll($fetch_style); |
- | 687 | }
|
|
- | 688 | else
|
|
- | 689 | {
|
|
- | 690 | $result = $stmt; |
|
- | 691 | }
|
|
673 | 692 | ||
674 | if (defined('DEBUG') && DEBUG > 1) |
693 | if (defined('DEBUG') && DEBUG > 1) |
675 | {
|
694 | {
|
676 | debug(array( |
695 | debug(array( |
677 | '_lastSuccess' => $success, |
696 | '_lastSuccess' => $success, |
Line 1041... | Line 1060... | ||
1041 | )); |
1060 | )); |
1042 | }
|
1061 | }
|
1043 | 1062 | ||
1044 | return $success; |
1063 | return $success; |
1045 | }
|
1064 | }
|
1046 | }
|
- | |
1047 | 1065 | }
|
|
- | 1066 |