Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

DbSimple v2.x: лаконичная работа с различными СУБД (Дмитрий Котеров, оценка: 10)
Goto page Previous  1, 2, 3 ... 11, 12, 13, 14, 15  Next
Author Message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue Mar 23, 2010 12:23 am (написано за 2 минуты 2 секунды)
   Post subject:
Reply with quote

При попытке выборки из функции в php, выводит ошибку "Fatal error: Call to a member function select() on a non-object in", вне функции работает отлично. Подскажите, пожалуйста в чем может быть проблема? В заранее огромная благодарность за помощь!
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Wed Mar 31, 2010 2:29 pm (спустя 8 дней 14 часов 6 минут; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

Code (php): скопировать код в буфер обмена
diff --git a/lib/DbSimple/Generic.php b/lib/DbSimple/Generic.php
index c4293c8..8fbbcb8 100644
--- a/lib/DbSimple/Generic.php
+++ b/lib/DbSimple/Generic.php
@@ -273,6 +273,22 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
         }
 
         /**
+         * Задает имя класса строки
+         *
+         * <br>для следующего запроса каждая строка будет
+         * заменена классом, конструктору которого передается
+         * массив поле=>значение для этой строки
+         *
+         * @param string $name имя класса
+         * @return DbSimple_Generic_Database указатель на себя
+         */

+        public function setClassName($name)
+        {
+                $this->_className = $name;
+                return $this;
+        }
+
+        /**
          * array getStatistics()
          * Returns various statistical information.
          */

@@ -507,6 +523,13 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
                         $total = call_user_func_array (www.php.net/call_user_func_array)(array (www.php.net/array)(&$this, 'selectCell'), $query);
                 }
 
+                if ($this->_className)
+                {
+                        foreach($result as $k=>$v)
+                                $result[$k] = new $this->_className($v);
+                        $this->_className = '';
+                }
+
                 return $result;
         }
 
@@ -1093,6 +1116,7 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
         );
 
         private $_cachePrefix = '';
+        private $_className = '';
 
         private $_logger = null;
         private $_cacher = null;
Добавил возможность задать класс объекта, извлекаемого из базы данных - иногда очень полезно, если в базе хранятся объекты, корректно работает с select(Row|Col|Cell) правда на Col и Cell ему пофигу, но row обрабатывает корректно.
Back to top
View user's profile Send private message Send e-mail
mot
Участник форума



Joined: 16 Mar 2006
Posts: 37
Карма: 3
   поощрить/наказать


PostPosted: Wed Apr 07, 2010 3:10 pm (спустя 7 дней 41 минуту; написано за 2 минуты 47 секунд)
   Post subject:
Reply with quote

Подскажите пожалуйста, можно ли получить с помощью DbSimple такой массив данных:
Code (php): скопировать код в буфер обмена
array (www.php.net/array) (
  0 =>
  array (www.php.net/array) (
    '1',
    'test',
    'test',
  ),
...
)
вместо стандартного:
Code (php): скопировать код в буфер обмена
array (www.php.net/array) (
  0 =>
  array (www.php.net/array) (
    'iPersonID' => '1',
    'sSecondName' => 'test',
    'sFirstName' => 'test',
  ),
...
)
чтобы не использовать после выполнения запроса комбинацию с foreach и array_values.
Back to top
View user's profile Send private message Send e-mail
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Wed Apr 07, 2010 7:55 pm (спустя 4 часа 44 минуты; написано за 1 минуту 10 секунд)
   Post subject:
Reply with quote

mot
Используется mysql_fetch_assoc(для mysql, аналогично для остальных), так что данные извлекаются именно в таком виде.
Можно конечно поменять на функцию, возвращающую численные ключи, но вот зачем...
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Wed Apr 07, 2010 10:22 pm (спустя 2 часа 27 минут; написано за )
   Post subject:
Reply with quote

Вам нужно ключевое слово extends...
Back to top
View user's profile Send private message Send e-mail
mot
Участник форума



Joined: 16 Mar 2006
Posts: 37
Карма: 3
   поощрить/наказать


PostPosted: Fri Apr 09, 2010 3:07 pm (спустя 1 день 16 часов 44 минуты; написано за 2 минуты 21 секунду)
   Post subject:
Reply with quote

Ivan1986
Редко, но требуется получить данные именно в таком виде. Спасибо за участие.

Юрий Насретдинов
В таком виде ключевое слово не к чему приставить.
Back to top
View user's profile Send private message Send e-mail
Lazor
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Apr 12, 2010 12:31 pm (спустя 2 дня 21 час 24 минуты; написано за 1 минуту)
   Post subject:
Reply with quote

Подскажите пожалуйста, этот проект заморожен? Не будет больше развиваться? Интересует адаптация под новые версии PHP.
Есть ли какие нибудь альтернативы, такие же красивые как эта.

Спасибо.
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Mon Apr 12, 2010 1:32 pm (спустя 1 час 1 минуту; написано за 1 минуту 8 секунд)
   Post subject:
Reply with quote

Lazor
Посмотрите прошлую страницу - я сейчас развиваю свою версию, там много всего нового. forum.dklab.ru/viewtopic.php?p=180253#180253
Back to top
View user's profile Send private message Send e-mail
Lazor
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Apr 14, 2010 8:08 pm (спустя 2 дня 6 часов 36 минут; написано за 2 минуты 1 секунду)
   Post subject:
Reply with quote

Ivan1986

я уже видел вашу версию, это конечно все очень хорошо, НО потом загнется ваша версия и неизвестно будет ли кто то другой форкать ее, и попадем в тупик.
Просто стоит вопрос - изобретать свой велосипед, или использовать этот, и потратить время на более насущные проблемы.
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Wed Apr 14, 2010 10:33 pm (спустя 2 часа 24 минуты; написано за 6 минут 1 секунду)
   Post subject:
Reply with quote

Lazor
Знаете, было одно кино - "занимашки", так вот там был диалог:
Quote:
- если мы туда пойдем, то мы возможно погибнем, а если мы останемся, то мы точно погибнем
- хм, погибнем, возможно погибнем, да, выбор небольшой.
Так вот я к чему, во первых оригинальная версия уже загнулась, во вторых все исходники того, что я доделал открыты, и закрывать я их не собираюсь, так что всегда можно продолжить, форкнуть, прислать патч, фичу запросить, я же не против (буду рад документации кстати, особенно в формате asciidoc).
И поверьте, моя версия тоже загнется, когда-нибуть, но похоже позже чем оригинальная. Но просто сейчас со старой вы уже в тупике, а с моей версией вы может быть будите в тупике.

По поводу своего велосипеда - да пожалуйста, создайте еще один велосипед, этих велосипедов и так уже завались, одним больше, одним меньше, какая разница.
Back to top
View user's profile Send private message Send e-mail
snaike
Заглянувший



Joined: 15 Apr 2010
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Thu Apr 15, 2010 12:36 pm (спустя 14 часов 2 минуты; написано за 4 минуты 59 секунд)
   Post subject:
Reply with quote

при работе с БД Firebird с помощью библиотеки DBSimple возникают проблемы.
Суть проблемы такова:
Есть структура БД:
CREATE TABLE PERSONA(
  PERSON_ID INTEGER_TYPE NOT NULL,
  LAST_NAME LASTNAME_DOMAIN,
  FIRST_NAME STRING17,
  SECOND_NAME STRING17,
  DATE_BIRTH DATETIME_TYPE DEFAULT 'NOW',
  DATE_INSERT DATETIME_TYPE DEFAULT 'NOW',
)
при запросе информации из таблицы, с помощью запроса: SELECT CAST * FROM persona WHERE LAST_NAME LIKE ?
информация из ячейки DATE_BIRTH не соответствует действительности.
в таблице записано скажем 01.01.1950 а выдает int(-1)
Если не использовать библиотеку, то все ок!
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Apr 27, 2010 3:07 pm (спустя 12 дней 2 часа 30 минут; написано за 2 минуты 51 секунду)
   Post subject:
Reply with quote

добавил обработку подзапроса в идентификаторе
Code (any language): скопировать код в буфер обмена
diff --git a/lib/DbSimple/Generic.php b/lib/DbSimple/Generic.php
index 8fbbcb8..6cad8cf 100644
--- a/lib/DbSimple/Generic.php
+++ b/lib/DbSimple/Generic.php
@@ -740,6 +740,8 @@ abstract class DbSimple_Generic_Database extends DbSimple_Generic_LastError
                                        // Identifier.
                                        if (!is_array($value))
                                        {
+                                               if ($value instanceof DbSimple_SubQuery)
+                                                       return $value->get($this->_placeholderNativeArgs);
                                                if (substr($value, 0, 2) == '?_')
                                                        $value = $this->_identPrefix . substr($value, 2);
                                                return $this->escape($value, true);
Это дает возможность делать обобщенные идентификаторы

и примерно такие вещи
Code (php): скопировать код в буфер обмена
QFW::$db->select('SELECT ?# FROM users', QFW::$db->subquery('CONCAT(f,i,o) AS fio'))
пример конечно надуманный, но в случае передачи параметров черте куда пригодится.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Герасимов
Заглянувший



Joined: 04 Oct 2008
Posts: 13
Карма: 6
   поощрить/наказать

Location: Санкт-Петербург

PostPosted: Thu Apr 29, 2010 9:45 pm (спустя 2 дня 6 часов 37 минут; написано за 36 секунд)
   Post subject:
Reply with quote

mot
mot wrote:
Подскажите пожалуйста, можно ли получить с помощью DbSimple такой массив данных
Можно вместо foreach и array_values использовать примерно то же самое, но короче
Code (php): скопировать код в буфер обмена
$not_assoc_result = array_map (www.php.net/array_map)('array_values', (array (www.php.net/array))$DB->select(...));
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Mon Jun 21, 2010 2:17 pm (спустя 1 месяц 21 день 16 часов 32 минуты; написано за 26 секунд)
   Post subject:
Reply with quote

Обновленная версия библиотеки, а то накладывать патчи наверное как-то не прикольно


DbSimple.zip
 Description:

Download
 Filename:  DbSimple.zip
 Filesize:  28.72 KB
 Downloaded:  441 Time(s)

Back to top
View user's profile Send private message Send e-mail
Arqin
Заглянувший



Joined: 25 Jun 2010
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Fri Jun 25, 2010 4:55 pm (спустя 4 дня 2 часа 37 минут; написано за 3 минуты 25 секунд)
   Post subject: Несоответсвие в получаемых данных select`а
Reply with quote

Работаю с библиотекой не так давно. Вот наткнулся на такое несоответствие:
Если пишем вот так
Code (php): скопировать код в буфер обмена
$limit = 1;
$order = "s.crttime desc";
$idc = 34; //например
$ret = $this->pgconn_3->select("
                select s.img as preview_img, *, gw.crttime, (select c.idcat from goodsview gw1 inner join catalog c on gw1.lkcatalogid=c.idcat and c.subcatalog=5 and gw1.lksortid=gw.lksortid) as firm_id from sort s
                inner join sortname sn on s.id=sn.lksortid
                inner join goodsview gw on s.id=gw.lksortid
                where s.id IN (
                        select (select id from
                                                                (select * from sort
                                                                where id IN (select lksortid from goodsview where lkcatalogid=c.idcat)) t2
                                                                order by t2.crttime desc limit ?)
                        from catalog c
                        inner join catalogname cn on c.idcat = cn.lkcatalogid
                        where c.showcatalog and c.subcatalog = ?)
                        order by ?"
, $limit, $idc, $order);
то order by отказывается срабатывать,
а в случае
Code (php): скопировать код в буфер обмена
$ret = $this->pgconn_3->select("
                select s.img as preview_img, *, gw.crttime, (select c.idcat from goodsview gw1 inner join catalog c on gw1.lkcatalogid=c.idcat and c.subcatalog=5 and gw1.lksortid=gw.lksortid) as firm_id from sort s
                inner join sortname sn on s.id=sn.lksortid
                inner join goodsview gw on s.id=gw.lksortid
                where s.id IN (
                        select (select id from
                                                                (select * from sort
                                                                where id IN (select lksortid from goodsview where lkcatalogid=c.idcat)) t2
                                                                order by t2.crttime desc limit $limit)
                        from catalog c
                        inner join catalogname cn on c.idcat = cn.lkcatalogid
                        where c.showcatalog and c.subcatalog = $idc)
                        order by $order"
);
всё правильно работает. Подскажите это я где-то не прав или всетаки в библиотеке что-то?
Back to top
View user's profile Send private message
Миша Спларов
Участник форума



Joined: 17 Nov 2003
Posts: 821
Карма: 65
   поощрить/наказать

Location: Россия, Москва

PostPosted: Fri Jun 25, 2010 7:52 pm (спустя 2 часа 56 минут; написано за 1 минуту 48 секунд)
   Post subject:
Reply with quote

Вы не правы, читайте что делают плейсхолдеры.
И посмотрите на конечный запрос он будет выглядеть как "order by 's.crttime desc'" — конечно, работать не будет.
Когда работаешь с подобной библиотекой и нет уверенности, какой sql генерируется, первым делом следует как раз на него и посмотреть.
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Fri Jun 25, 2010 11:21 pm (спустя 3 часа 28 минут; написано за 1 минуту 50 секунд)
   Post subject:
Reply with quote

Arqin
Если вам нужны такие подстановки, то нужен плейсхолдер ?s

примерно так
Code (php): скопировать код в буфер обмена
$order = $this->pgconn_3->subquery("s.crttime desc");
"...
order by ?s"
, $limit, $idc, $order);
Back to top
View user's profile Send private message Send e-mail
Arqin
Заглянувший



Joined: 25 Jun 2010
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Mon Jun 28, 2010 1:36 pm (спустя 2 дня 14 часов 15 минут; написано за 7 секунд)
   Post subject:
Reply with quote

Ivan1986, большое спасибо!
Back to top
View user's profile Send private message
artembeloglazov
Заглянувший



Joined: 20 Jul 2010
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Tue Jul 20, 2010 11:47 am (спустя 21 день 22 часа 10 минут; написано за 6 секунд)
   Post subject:
Reply with quote

подскажите, есть возможность миграции в dbSimple?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Aug 18, 2010 11:23 pm (спустя 29 дней 11 часов 36 минут; написано за 4 секунды)
   Post subject:
Reply with quote

Выложил на GitHub:
github.com/DmitryKoterov/DbSimple

Буду рад, если вы станете делать форки и вносить в них изменения (я их тогда смогу в основной репозиторий подтягивать периодически). Главное, чтобы изменения вписывались в общую идеологию библиотеки (не меняли ее существующий интерфейс, а только расширяли) и были покрыты phpt-тестами (по возможности).

Насчет phpt - все очень просто: переходите в директорию t/DbSimple и набираете там:

pear run-tests -r

Формат тестов очень простой, можно делать по аналогии (если тесты не заведутся сразу же, см. файлики */dsn.txt).
Back to top
View user's profile Send private message Send e-mail
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Aug 24, 2010 2:06 pm (спустя 5 дней 14 часов 42 минуты; написано за 1 минуту 27 секунд)
   Post subject:
Reply with quote

Сделал форк github.com/ivan1986/DbSimple и добавил туда свои доработки
Создал две ветки - php4 и master - в php4 меньше функционала, но совместима.
Добавил несколько новых тестов, исправил ошибки.
Back to top
View user's profile Send private message Send e-mail
G00dvin
Заглянувший



Joined: 18 May 2010
Posts: 10
Карма: 0
   поощрить/наказать


PostPosted: Fri Sep 10, 2010 1:02 pm (спустя 16 дней 22 часа 55 минут; написано за 5 минут 9 секунд)
   Post subject: Префиксы и подстановка имен таблиц
Reply with quote

Просмотрел библиотеку, очень понравилась возможность задания типов для плейсхолдеров.
Однако сразу возник вопрос.

Поясню на примере:
SELECT
*
FROM
?_?#, здесь в ?_ - подставляется префикс, а в ?# имя таблицы - получается к примеру phpBB_`table`

Есть ли в библиотеке возможность производить правильные подстановки такого вида?
Back to top
View user's profile Send private message
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Fri Sep 10, 2010 7:59 pm (спустя 6 часов 56 минут; написано за 52 секунды)
   Post subject:
Reply with quote

G00dvin
Есть, в моей версии
Code (php): скопировать код в буфер обмена
select('SELECT * FROM ?#', '?_table')
Back to top
View user's profile Send private message Send e-mail
Семён
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Sep 13, 2010 11:28 am (спустя 2 дня 15 часов 28 минут; написано за 1 минуту 12 секунд)
   Post subject:
Reply with quote

В справочной документации указан некорректный пример:

Выборка связанного дерева:
Code (php): скопировать код в буфер обмена
$forest = $DB->select('
  SELECT
    user_id   AS ARRAY_KEY,
    parent_id AS PARENT_KEY,
    *
  FROM ?_users
'
);
Изменить на:
Выборка связанного дерева:
Code (php): скопировать код в буфер обмена
$forest = $DB->select('
  SELECT
    *,
    user_id   AS ARRAY_KEY,
    parent_id AS PARENT_KEY
  FROM ?_users
'
);
Иначе происходит ошибка. :)
Back to top
!Shoorf
Заглянувший



Joined: 07 Sep 2008
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Mon Sep 13, 2010 4:59 pm (спустя 5 часов 31 минуту; написано за 2 минуты 8 секунд)
   Post subject:
Reply with quote

Доброго времени суток всем!

Извиняюсь за вопрос, сегодня к вечеру уже мозг кипит... Скачал последнюю на данный момент ревизию с github.com/ivan1986/DbSimple , подключаю, как написано в примере по ссылке:
Code (php): скопировать код в буфер обмена
...
require_once "./include/dbsimple/Connect.php";
$db = DbSimple_Connect('mysql://'.$dbuser.':'.$dbpass.'@'.$dbhost.'/'.$dbname);
и в браузере получаю:
Code (any language): скопировать код в буфер обмена
Fatal error: Call to undefined function DbSimple_Connect() in Z:\home\test1.ru\www\header.php on line 9
что я делаю не так?
Back to top
View user's profile Send private message
Семён
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Sep 14, 2010 7:10 am (спустя 14 часов 10 минут; написано за 1 минуту 5 секунд)
   Post subject:
Reply with quote

Я конечно может и ошибаюсь, но у тебя неправильно происходит и подключение, и соответственно коннект.
У меня в двиге подключение происходит так: (из мануалов) ($config - конфигурационный массив)
Code (php): скопировать код в буфер обмена
require LIBS . 'db' . DS . 'Generic.php';
//Call DBSimple
$database = DbSimple_Generic::connect($config['db']['type']."://".$config['db']['login'].":".$config['db']['password']."@".$config['db']['host']."/".$config['db']['name']);
$database->select("SET character_set_results = ".$config['db']['db_charset'].", character_set_client = ".$config['db']['db_charset'].", character_set_connection = ".$config['db']['db_charset'].", character_set_database = ".$config['db']['db_charset'].", character_set_server = ".$config['db']['db_charset']);
$database->setIdentPrefix($config['db']['db_pref']);
$database->setErrorHandler('databaseErrorHandler');

// Код обработчика ошибок SQL.
function databaseErrorHandler($message, $info) {
    // Если использовалась @, ничего не делать.
    if (!error_reporting (www.php.net/error_reporting)()) return;
    // Выводим подробную информацию об ошибке.
    echo (www.php.net/echo) "SQL Error: $message<br><pre>";
    print_r (www.php.net/print_r)($info);
    echo (www.php.net/echo) "</pre>";
    exit (www.php.net/exit)();
}
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Sep 14, 2010 8:58 am (спустя 1 час 48 минут; написано за 1 минуту 6 секунд)
   Post subject:
Reply with quote

!Shoorf
DbSimple_Connect это класс, вы забыли new

Семён
Кстати использовать DbSimple_Connect лучше - он не подключается к базе, пока нет необходимости.
Back to top
View user's profile Send private message Send e-mail
Семён
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Sep 14, 2010 9:42 am (спустя 43 минуты; написано за 23 секунды)
   Post subject:
Reply with quote

Ivan1986

А зачем загружать класс, если есть вероятность, что он не будет использоваться? МаслоМасляное.
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Sep 14, 2010 10:44 am (спустя 1 час 2 минуты; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

Семён
По сравнению с коннектом к базе загрузку класса можно не учитывать.
Хотя, если хотите экономить на спичках ломая архитектуру системы - ваше право.
Back to top
View user's profile Send private message Send e-mail
Семён
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Sep 14, 2010 3:41 pm (спустя 4 часа 57 минут; написано за 57 секунд)
   Post subject:
Reply with quote

Ivan1986
Т.е. вы хотите сказать, что в архитектуре Системы (вашей), нет запросов к базе?
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Tue Sep 14, 2010 11:27 pm (спустя 7 часов 45 минут; написано за 6 минут 28 секунд)
   Post subject:
Reply with quote

Семён
Нет, я хочу сказать, что запросы к базе есть не всегда - типичный пример при проверке входных данных пользователь ошибся и это ясно без коннекта к базе.

У вас есть варианты:

1) Инициализировать класс и коннект к базе всегда и поместить инициализацию в самое начало - как я понимаю у вас сейчас так
Это дает то, что мы коннектимся к базе всегда (не всегда есть возможность поставить pconnect)

2) Инициализировать класс и коннект только когда реально нужно приконнектиться - по сути куча инициализаций вида
Code (php): скопировать код в буфер обмена
function testAction()
{
    if (empty (www.php.net/empty)($_POST['user']))
       return 'error';
    require LIB.'/InitDB.php';
    $db->select(...)
}
3) Инициализировать класс всегда, а коннект только при первом запросе - так сделано у меня
С учетом размера класса DbSimple_Connect и его конструктора - время копеечное, плюс одно сравнение с null при запросе.
Back to top
View user's profile Send private message Send e-mail
Kirya85
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Sep 16, 2010 10:46 pm (спустя 1 день 23 часа 19 минут; написано за 1 минуту 28 секунд)
   Post subject: Ошибка на сервере
Reply with quote

Проблема такая: на шаред хостингах (проверял на 3х! :-)) все ок, работает без вопросов.
Есть VDS с ISPManager
Выпадает такая ошибка
Fatal error: Error loading database driver: no file DbSimple/Mysql.php in include_path; no file Mysql.php in /home/admin/data/www/ххх.net/lib/dbsimple in /home/admin/data/www/ххх.net/lib/dbsimple/generic.php on line 108

файлы существуют, лежат в этих папках 100%
уже что только не делал (

PHP Version 5.2.14
Back to top
Миша Спларов
Участник форума



Joined: 17 Nov 2003
Posts: 821
Карма: 65
   поощрить/наказать

Location: Россия, Москва

PostPosted: Fri Sep 17, 2010 6:10 am (спустя 7 часов 23 минуты; написано за 40 секунд)
   Post subject:
Reply with quote

Читайте внимательнее ошибку. Он ищет файл по пути /home/admin/data/www/ххх.net/lib/dbsimple/DbSimple/Mysql.php
Back to top
View user's profile Send private message
kirya85
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Sep 17, 2010 8:14 am (спустя 2 часа 4 минуты; написано за 2 минуты 22 секунды)
   Post subject:
Reply with quote

Да, но и этот способ был опробован, файлы лежат и в той директории, что вы указали и в корнне сайта и где только не лежат, а ошибка не исчезает. Просто не могу понять, почему она проявляется именно на данном сервере. Тестил ещё раз на другом сервере, все ок.
Регистр в названиях папок так же не дает решения.
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Fri Sep 17, 2010 1:34 pm (спустя 5 часов 19 минут; написано за 3 минуты 26 секунд)
   Post subject:
Reply with quote

kirya85
Файлы где только не лежат, только не там где надо :)
в папке lib положите папку DbSimple - и в нее файлы.
Проявляется на этом сервере потому что на VDS все настроено по умолчанию, а на шаред хостингах сделано так, чтобы даже максимально неправильное расположение файлов заработало.
И блин назовите файлы в правильном регистре, если у вас кривая винда, которая поганит регистр, то уж переименовывайте, или как-то выкручивайтесь
Back to top
View user's profile Send private message Send e-mail
bæv
Модератор «Дзена»



Joined: 27 Aug 2003
Posts: 7275
Карма: 9987
   поощрить/наказать


PostPosted: Tue Sep 21, 2010 4:37 pm (спустя 4 дня 3 часа 2 минуты; написано за 10 секунд)
   Post subject:
Reply with quote


!

Семён, forum.dklab.ru/about/todo/PravilaEtogoForuma-ProchitayteObyazatelno.html — на форуме принято обращение «на Вы».
Back to top
View user's profile Send private message
lazygamer
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Oct 24, 2010 5:06 am (спустя 1 месяц 2 дня 12 часов 29 минут; написано за 1 минуту 48 секунд)
   Post subject:
Reply with quote

Подскажите пожалуйста как можно получить список колонок таблицы?
Есть ли в библиотеке метод наподобие mysql функции mysql_list_fields?
Если нет, то как можно добиться того же результата?
Заранее благодарен!
Back to top
Ivan1986
Участник форума
Warnings: 2


Joined: 09 Oct 2007
Posts: 807
Карма: 38
   поощрить/наказать


PostPosted: Sun Oct 24, 2010 11:24 am (спустя 6 часов 17 минут; написано за 23 секунды)
   Post subject:
Reply with quote

lazygamer
Code (SQL): скопировать код в буфер обмена
SHOW FIELDS IN `table`
Back to top
View user's profile Send private message Send e-mail
lazygamer
Заглянувший



Joined: 24 Oct 2010
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Sun Oct 24, 2010 4:16 pm (спустя 4 часа 52 минуты; написано за 18 секунд)
   Post subject:
Reply with quote

спасибо!
Back to top
View user's profile Send private message
vik76
Заглянувший



Joined: 26 Oct 2010
Posts: 10
Карма: 0
   поощрить/наказать


PostPosted: Tue Oct 26, 2010 1:14 pm (спустя 1 день 20 часов 58 минут; написано за 6 минут 5 секунд)
   Post subject: Переход на новую версию DbSimple
Reply with quote

Добрый день!
Пытаюсь заапгрейдить дбсимпл, подключаю версию от Ivan1986 вместо предыдущей версии от Котерова.

Проблема с логированием.

function myLogger($db, $sql){
  $caller = $db->findLibraryCaller(); <------ здесь почему-то проблема возникает, выполнение прерывается.
  $tip = "at ".@$caller['file'].' line '.@$caller['line'];

Ошибку выдает
Fatal error: Call to protected method DbSimple_LastError::findLibraryCaller() from context '' in blablabla.php on line 199

Если отключаю логер, то все работает.

Подскажите в чем проблема.
Есть ли еще подводные камни при переходе на другую версию?
Затеял переход, потому что мне понадобилось выполнить за один раз несколько запросов или хранимую процедуру. Как я понял дбсимл от Котерова такого не умеет.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3 ... 11, 12, 13, 14, 15  Next
Page 12 of 15    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML