예제 #1
0
파일: Pdo.php 프로젝트: ssrsfs/blg
 /**
  * 
  * @param Dbi_Sql_Query $query
  * @return PDOStatement
  */
 private function _execute(Dbi_Sql_Query $query)
 {
     self::$queryCount++;
     $expression = $query->expression();
     $stmt = $this->_pdo->prepare($expression->statement(), array(PDO::CURSOR_SCROLL));
     if (!$stmt) {
         throw new Exception($this->_pdo->errorInfo);
     }
     $parameters = $expression->parameters();
     if (count($parameters)) {
         $index = 1;
         foreach ($parameters as $p) {
             if (!is_scalar($p)) {
                 $p = json_encode($p);
             }
             $stmt->bindValue($index, $p);
             $index++;
         }
     }
     $stmt->execute();
     if ($stmt->errorCode() != '00000') {
         $info = $stmt->errorInfo();
         throw new Exception($info[2]);
     }
     return $stmt;
 }
예제 #2
0
파일: MySqli.php 프로젝트: ssrsfs/blg
 /**
  * Execute a query.
  * @param Dbi_Sql_Query $query
  * @return mysqli_stmt
  */
 private function _execute(Dbi_Sql_Query $query)
 {
     self::$queryCount++;
     $expression = $query->expression();
     $stmt = $this->_connection->prepare($expression->statement());
     if (!$stmt) {
         throw new Exception($this->_connection->error);
     }
     $parameters = $expression->parameters();
     if (count($parameters)) {
         $types = '';
         $refs = array();
         foreach ($parameters as &$p) {
             if (!is_scalar($p)) {
                 $p = json_encode($p);
             }
             $types .= "s";
             $refs[] =& $p;
         }
         call_user_func_array(array($stmt, 'bind_param'), array_merge(array($types), $refs)) or die('hmm');
     }
     $stmt->execute();
     $stmt->store_result();
     return $stmt;
 }
예제 #3
0
파일: MySql.php 프로젝트: ssrsfs/blg
 private function _bindParameters(Dbi_Sql_Query $sql)
 {
     $expression = $sql->expression();
     $result = $expression->statement();
     $offset = 0;
     $parameters = $expression->parameters();
     while (count($parameters)) {
         $p = array_shift($parameters);
         $index = strpos($result, '?', $offset);
         $escaped = mysql_real_escape_string($p);
         $result = substr($result, 0, $index) . "'" . $escaped . "'" . substr($result, $index + 1);
         $offset = $index + strlen($escaped) + 2;
     }
     return $result;
 }