Вход Регистрация
Файл: sys/library/goDB/Implementations/Mysql.php
Строк: 202
<?php
/**
 * @package goDB
 */

namespace goDBImplementations;

/**
 * The adapter for php_mysqli
 *
 * @author Oleg Grigoriev <go.vasac@gmail.com>
 */
final class Mysql extends Base
{
    
/**
     * {@inheritdoc}
     */
    
public function connect(array $params, &$errorInfo = null, &$errorCode = null)
    {
        
$host = explode(':', $params['host'], 2);
        if (!empty(
$host[1])) {
            
$port = $host[1];
        } else {
            
$port = $params['port'];
        }
        
$host = $host[0];
        
$user = $params['username'];
        
$password = $params['password'];
        
$dbname = $params['dbname'];
        
$socket = $params['socket'];
        
$connection = @(new mysqli($host, $user, $password, $dbname, $port, $socket));
        if (
$connection->connect_error) {
            
$errorInfo = $connection->connect_error;
            
$errorCode = $connection->connect_errno;
            return 
false;
        }
        if (
$params['charset']) {
            if (!
$connection->set_charset($params['charset'])) {
                
$errorInfo = $connection->error;
                
$errorCode = $connection->errno;
                
$connection->close();
                return 
false;
            }
        }
        return 
$connection;
    }

    
/**
     * {@inheritdoc}
     */
    
public function close($connection)
    {
        return 
$connection->close();
    }

    
/**
     * {@inheritdoc}
     */
    
public function query($connection, $query)
    {
        return 
$connection->query($query, MYSQLI_STORE_RESULT);
    }

    
/**
     * {@inheritdoc}
     */
    
public function getInsertId($connection, $cursor = null)
    {
        return 
$connection->insert_id;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getAffectedRows($connection, $cursor = null)
    {
        return 
$connection->affected_rows;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getErrorInfo($connection, $cursor = null)
    {
        return 
$connection->error;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getErrorCode($connection, $cursor = null)
    {
        return 
$connection->errno;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getNumRows($connection, $cursor)
    {
        return 
$cursor->num_rows;
    }

    
/**
     * {@inheritdoc}
     */
    
public function fetchRow($connection, $cursor)
    {
        return 
$cursor->fetch_row();
    }

    
/**
     * {@inheritdoc}
     */
    
public function fetchAssoc($connection, $cursor)
    {
        return 
$cursor->fetch_assoc();
    }

    
/**
     * {@inheritdoc}
     */
    
public function fetchObject($connection, $cursor)
    {
        return 
$cursor->fetch_object();
    }

    
/**
     * {@inheritdoc}
     */
    
public function freeCursor($connection, $cursor)
    {
        return 
$cursor->free();
    }

    
/**
     * {@inheritdoc}
     */
    
public function escapeString($connection, $value)
    {
        return 
$connection->real_escape_string($value);
    }

    
/**
     * {@inheritdoc}
     */
    
protected function reprField($connection, $value)
    {
        return 
'`'.str_replace('`', '``', $value).'`';
    }

    
/**
     * {@inheritdoc}
     */
    
public function rewindCursor($connection, $cursor)
    {
        return 
$cursor->data_seek(0);
    }

    
/**
     * {@inheritdoc}
     */
    
protected $paramsReq = array('username', 'password');

    
/**
     * {@inheritdoc}
     */
    
protected $paramsDefault = array(
        
'host' => 'localhost',
        
'dbname' => null,
        
'charset' => null,
        
'port' => null,
        
'socket' => null,
    );

    
/**
     * {@inheritdoc}
     */
    
protected $depsPhpExts = 'mysqli';

    
/**
     * @var string
     */
    
private $errorInfo;

    
/**
     * @var int
     */
    
private $errorCode;
}
Онлайн: 0
Реклама