Author |
Message |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Tue Jan 23, 2007 3:05 pm ()
Post subject:
|
|
|
|
Back to top |
|
 |
elpaso
Заглянувший
Joined: 05 Jan 2007
Posts: 17
Карма: 3 поощрить/наказать
|
Posted: Tue Jan 23, 2007 3:05 pm (спустя 1 секунду; написано за 1 минуту 18 секунд)
Post subject:
|
|
Нашел небольшой баг в вашем примере из статьи Это касается использования ARRAY_KEY Такой запросдает ошибку Code (php): | скопировать код в буфер обмена | [code] => 1064 [message] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL (www.php.net/mysql) server version for the right syntax to use near '* FROM `users`' at line 1 [query] => SELECT id AS ARRAY_KEY, * FROM `users` | А вот так отлично срабатывает
|
|
Back to top |
|
 |
Константин Жинько [tIT]
Сотрудник «Лаборатории»

Joined: 12 Jun 2004
Posts: 2264
Карма: 106 поощрить/наказать
Location: Москва
|
Posted: Tue Jan 23, 2007 3:46 pm (спустя 41 минуту; написано за 54 секунды)
Post subject:
|
|
Просто не надо писать запросы с ошибками ))) Выполните в консоли свой запрос и изучайте SQL, однако!
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Wed Jan 24, 2007 6:54 pm (спустя 1 день 3 часа 8 минут; написано за 4 минуты 55 секунд)
Post subject:
|
|
Никак не могу понять, как сделать selectpage, но с макроподстановками? Вот простой select (взят из примера) Code (SQL): | скопировать код в буфер обмена | $rows = $DB->select('SELECT * FROM goods WHERE category_id = ? { AND activated_at > ? }', $categoryId, (empty($_POST['activated_at'])? DBSIMPLE_SKIP : $_POST['activated_at']) ); | тут все понятно. Вот selectpage Code (SQL): | скопировать код в буфер обмена | $rows = $DB->selectPage($totalRows,'SELECT * FROM ?_users WHERE category_id = ? { AND activated_at > ? } LIMIT ?d, ?d', $from, $pageSize); | Этот запрос заведомо ошибочен, потому что, я не представляю, куда тут надо "впихнуть":Подскажите, пожалуйста. p.s. наверное надо делать простой select, но с указанием LIMIT
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Wed Jan 24, 2007 10:27 pm (спустя 3 часа 32 минуты; написано за 3 минуты 33 секунды)
Post subject:
|
|
Code (php): | скопировать код в буфер обмена | $a_a = @ $_POST['activated_at'] || DBSIMPLE_SKIP; $rows = $DB->selectPage($totalRows, 'SELECT * FROM ?_users WHERE category_id = ? { AND activated_at > ? } LIMIT ?d, ?d', $cat_id, $a_a, $from, $pageSize); |
|
|
Back to top |
|
 |
Дмитрий Котеров
Администратор

Joined: 10 Mar 2003
Posts: 13665
Карма: 413 поощрить/наказать
|
Posted: Thu Jan 25, 2007 9:12 am (спустя 10 часов 44 минуты; написано за 2 минуты 31 секунду)
Post subject:
|
|
Я бы рекомендовал таже вот тек выравнивать: Code (php): | скопировать код в буфер обмена | $rows = $DB->selectPage($totalRows, ' SELECT * FROM ?_users WHERE category_id = ? { AND activated_at > ? } LIMIT ?d, ?d ', $cat_id, (@$_POST['activated_at']? $_POST['activated_at'] : DBSIMPLE_SKIP), $from, $pageSize ); | Это выглядит сильно длиннее, зато читается гораздо лучше.
|
|
Back to top |
|
 |
Guest
Карма: 388 поощрить/наказать
|
Posted: Thu Jan 25, 2007 1:57 pm (спустя 4 часа 44 минуты; написано за 20 секунд)
Post subject:
|
|
Дмитрий Котеров
Спасибо. Клевая библиотека!
|
|
Back to top |
|
 |
slmark
Участник форума

Joined: 09 Aug 2006
Posts: 20
Карма: 0 поощрить/наказать
Location: Минск, Беларусь
|
Posted: Mon Jan 29, 2007 3:11 pm (спустя 4 дня 1 час 14 минут; написано за 3 минуты 29 секунд)
Post subject:
|
|
Здравствуйте. Сразу хочу поблагодарить за сие чудо, раньше пользовался библиотекой placeholder's сейчас перешел на DBSimple - отличная штука. И у меня есть по ней 2 вопроса: 1. Как при помощи DBSimple создать непосредственно БД? Как выход я сейчас создаю БД "стандартными" средствами PHP, а дальше DBSimple, есть ли другое решение? 2. Когда использую DBSimple в функциях получаю следующее сообщение "Error: Call to a member function on a non-object.." Подскажите, пожалуйста, как бороться :) Спасибо
|
|
Back to top |
|
 |
Satyrius
Участник форума

Joined: 28 Mar 2006
Posts: 110
Карма: 2 поощрить/наказать
Location: Москва
|
Posted: Mon Jan 29, 2007 11:53 pm (спустя 8 часов 41 минуту; написано за 1 минуту 17 секунд)
Post subject:
|
|
- Средствами SQL
- А Вы код покажите...
|
|
Back to top |
|
 |
slmark
Участник форума

Joined: 09 Aug 2006
Posts: 20
Карма: 0 поощрить/наказать
Location: Минск, Беларусь
|
Posted: Tue Jan 30, 2007 9:34 am (спустя 9 часов 41 минуту; написано за 3 минуты 42 секунды)
Post subject:
|
|
Satyrius wrote: | - Средствами SQL
| Спасибо, не знаю, почему у меня не получалось (дело не в sql а в коннекте к бд :)) ------- Satyrius wrote: | А Вы код покажите... | Файл index.php Code (php): | скопировать код в буфер обмена | require_once('inc/func.php');
require_once ('inc/db/lib/config.php'); require_once ('inc/db/lib/DbSimple/Generic.php');
$DB = DbSimple_Generic::connect('mysql://root:@localhost/tb3');
echo (www.php.net/echo) getUsersNumber(); | Файл func.php:Итог: Quote: |
Fatal error: Call to a member function on a non-object in x:\home\t\www\inc\func.php on line 4 | Спасибо.
|
|
Back to top |
|
 |
Satyrius
Участник форума

Joined: 28 Mar 2006
Posts: 110
Карма: 2 поощрить/наказать
Location: Москва
|
Posted: Tue Jan 30, 2007 3:51 pm (спустя 6 часов 16 минут; написано за 4 минуты 58 секунд)
Post subject:
|
|
slmark
А вы с PHP давно работаете? Слышали про области видимости переменных? Вы объявляете $DB в глобальной области, а затем пытаетесь использовать в области видимости функции. Но в области видимости функуии переменной $DB нет! Вы обращаетесь к неинициализированному объекту, вот и получается что вы пытаетесь вызвать метод "необъекта". Если хотите использовать $DB то надо делать так: Code (php): | скопировать код в буфер обмена | <?php function getUsersNumber() { global (www.php.net/global) $DB; // $rows = $DB->select('SELECT user_id FROM tb_user'); return $rows; } ?> | Можно еще $DB передавать функции в аргументах.
|
|
Back to top |
|
 |
slmark
Участник форума

Joined: 09 Aug 2006
Posts: 20
Карма: 0 поощрить/наказать
Location: Минск, Беларусь
|
Posted: Tue Jan 30, 2007 4:59 pm (спустя 1 час 7 минут; написано за 54 секунды)
Post subject:
|
|
Satyrius, Огромное спасибо. Моя проблема в том, что я никогда не занимался ООП. Спасибо.
|
|
Back to top |
|
 |
Satyrius
Участник форума

Joined: 28 Mar 2006
Posts: 110
Карма: 2 поощрить/наказать
Location: Москва
|
Posted: Tue Jan 30, 2007 11:13 pm (спустя 6 часов 13 минут; написано за 1 минуту 21 секунду)
Post subject:
|
|
slmark
Тут не в ООП проблема была, а в том что вы не разбираетесь в области видимости переменных. Вот, почитайте в мануале (www.php.net/manual/en/language.variables.scope.php).
|
|
Back to top |
|
 |
|