colshrapnel / safemysql

A real safe and convenient way to handle MySQL queries.
Apache License 2.0
396 stars 197 forks source link

Результаты запросов в виде объектов #30

Open globalmac opened 9 years ago

globalmac commented 9 years ago

Доброго времени суток. Как-то пытался работать с результатом запроса в виде объектов, а не ассоциативного массива и понял что такой возможности не предусмотрено или я что-то где-то упустил=). Поправьте меня, если есть другие варианты. Пользуюсь таким хаком:

public function fetchObjects($result) 
{
    return mysqli_fetch_object($result);
}

Строка

public function getRowObjects()
{
    $query = $this->prepareQuery(func_get_args());
    if ($res = $this->rawQuery($query)) 
    {
        $ret = $this->fetchObjects($res);
        $this->free($res);
        return $ret;
    }
    return FALSE;
}

Список

public function getAllObjects() 
{
    $ret   = array();
    $query = $this->prepareQuery(func_get_args());
    if ( $res = $this->rawQuery($query) )
    {
        while($row = $this->fetchObjects($res))
        {
            $ret[] = $row;
        }
        $this->free($res);
    }
    return $ret;
}

Результат

// Строка
$row = $db->getRowObjects("SELECT * FROM table WHERE id = ?i", 500);
echo $row->value;

// Список
$data = $db->getAllObjects("SELECT * FROM table");
foreach($data as $row) 
{
    echo $row->value;
}