Кто шарит в sqlite3

1. Вантуз-мен (26.03.2009 / 22:26)
Парни подскажите что нужно сделать чтобы заработала библиотека sqlite3
К примеру я все установил
Пишу echo sqlite3_libversion(); то все нормально, показывает самую последнюю версию,
а если пишу скрипт через класс print_r(SQLite3::version()); то не пашет, или так
<?php
$db = new SQLite3 ( 'mysqlitedb.db' );
$db -> exec ( 'CREATE TABLE foo (bar STRING)' );
$db -> exec ( "INSERT INTO foo (bar) VALUES ('This is a test')" );
$result = $db -> query ( 'SELECT bar FROM foo' );
var_dump ( $result -> fetchArray ());
?>
требует класс sqlite3, я так понял он встроенный но как его настроить? Через PDO не хочу писать, кто знает подскажите

2. Вантуз-мен (26.03.2009 / 22:27)
и какие хостинги поддерживают sqlite3 кто знает

3. Мохьмад (26.03.2009 / 22:33)
http://best-hoster.com http://jino.ru

4. Вантуз-мен (26.03.2009 / 22:41)
там стоит старый 2.8.17, а мне нужен 3 sqlite

5. Мохьмад (26.03.2009 / 22:57)
Щас гугл пошарю

6. Мохьмад (26.03.2009 / 23:00)
Посмотри http://lenera.ru

7. Удаленный (26.03.2009 / 23:12)
вантуз да почти все хосты поддерживают. точней все нормальные хосты. хочешь нормальный хост выбирай qwarta.ru это те на будущее.

8. GodZiLLa (26.03.2009 / 23:41)
Не знаю за что рамсеса забанили,
да и он тоже не знает, но он мог бы здесь помочь.
Он как раз свой двиг на скул лайт пишет.
Вот это , не то, что надо ???
<?
Executes a result-less query against a given database.
Список параметров
query
The SQL query to execute (typically an INSERT, UPDATE, or DELETE query).
Возвращаемые значения
ReturnsTRUEif the query succeeded,FALSEon failure.
Примеры
Пример #1SQLite3::exec()example
<?php
$db= newSQLite3('mysqlitedb.db');
$db->exec('CREATE TABLE bar (bar STRING)');
?>
add a noteadd a noteUser Contributed Notes
?>


9. GodZiLLa (26.03.2009 / 23:42)
Вот мануал http://us.php.net/manual/ru/class.sqlite3.php

10. Вантуз-мен (26.03.2009 / 23:44)
$db= newSQLite3('mysqlitedb.db');
$db->exec('CREATE TABLE bar (bar STRING)');
вот чтобы так работало на денвере что надо?
Библиотека третья стоит, что еще там установить не понимаю
Nikotin SQLITE3 не у всех стоит,не путай просто с sqlite

11. smartvbxos7 (26.03.2009 / 23:47)
1xw.ru там есь 3версия

12. Вантуз-мен (26.03.2009 / 23:56)
Fatal error: Class 'SQLite3' not found in /home/symbifi/public_html/1/index.php on line 2
это на 1xw, не пашет там

13. GodZiLLa (26.03.2009 / 23:56)
10.
там в денвере ещё файл ини править надо,
и строку раскоментировать, со скулайт...

14. GodZiLLa (27.03.2009 / 00:07)
необходимо открыть файл /usr/local/php5/php.ini в любом текстовом редакторе и раскомментировать директивы подключения тех или иных модулей, чтобы они выглядели так:
extension = имя_модуля

15. Вантуз-мен (27.03.2009 / 00:11)
годзилла я говорю у меня пашет 3 только так
Пишу echo sqlite3_libversion(); то все нормально, показывает самую последнюю версию,
а если пишу скрипт через класс print_r(SQLite3::version()); то не пашет
мне именно на классах нужно чтобы заработало

16. GodZiLLa (27.03.2009 / 00:11)
Это для денвера,
наличие модуля ещё не значит его работу.
Попробуй найти и раскоментить строку, чтоб модуль скулайт работал...

17. Вантуз-мен (27.03.2009 / 00:12)
сказали как полная поддержка в php 5.3.0 будет, 24 марта вышел как раз 5.3.0 rc1

18. GodZiLLa (27.03.2009 / 00:13)
Циклом выводить надо...
в коде выше цикла нет...

19. Вантуз-мен (27.03.2009 / 00:16)
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
extension=php_s qlite3.dll
в php5/ext лежат php_pdo_sqlite.dll php_sqlite3.dll php_sqlite.dll php_pdo.dll, в windows/systems32 лежит sqlite3.dll, sqlite3.def

20. Вантуз-мен (27.03.2009 / 00:17)
версия 3.6.11 у меня, print_r(SQLite3::version()); все тут правильно, массив выводится как есть

21. GodZiLLa (27.03.2009 / 00:24)
этой строки не хватает
while ($row=$results->fetchArray()) {
var_dump($row);
}
а это убрать
var_dump($row);
Попробуй...

22. Мохьмад (27.03.2009 / 00:32)
Ideal

23. Павел (27.03.2009 / 00:43)
Вот какаята библа для работы с этой базой можес будет поле3на http://gentee.com/phpbb/viewtopic.php?t=1045&sid=6ef7fe2cb3c7b2860d7b6b2007177e40

24. Удаленный (15.04.2009 / 03:29)
#1.
http://4pda.ru/forum/index.php?showtopic=22563
может пригодится на кпк побалыватся.
говорят сколайт 3 потдерживает

25. Удаленный (01.07.2009 / 16:36)
Vantuz, ну как, разобрался с ооп в sqlite? Хотел попробывать щас, доперло что все классы надо или самому писать или находить где то :-/

26. Вантуз-мен (01.07.2009 / 17:50)
я пишу на sqlite 2.8.17 использую только что встроено в него, ничего внешнего пока не применял

27. Удаленный (01.07.2009 / 18:23)
А ооп? $дб->квери(...
Так пишешь?
Вот пытаюсь на ооп, но знаний не хватает. Все время бд теряет класс.
class sqlite{
function _construct(){
$this->conect(); }
$db = '../dts/forum.db';
function conect(){
$this->lnk=sqlite_open($this->db); }
function query(){
$this->lnk=sqlite_query($this->db); }
$query = new query;
}
$sqlite= new sqlite;
$total=$sqlite->query("INSERT INTO post....
вот примерно такой класс... И все время при запросе выдает нет параметра 1. Т.е. Пути к бд.sad
ни как не пойму что не так делаю

28. Вантуз-мен (01.07.2009 / 20:26)
if ($db = new SQLiteDatabase(DATADIR.'data/forum.db')){
$allposts = $db->query("SELECT * FROM posts WHERE topic_id='".$arr[$i]['topic_id']."' ORDER BY post_time DESC;");
$lastpost = $allposts->current();
$ptotal = $allposts->numRows();
так пишу

29. Станислав (01.07.2009 / 20:30)
7 ога, супер-хост. Особенно понравилось чё там на главной: "QWARTA.RU самый дырявый хостинг в России smile)"

30. Удаленный (02.07.2009 / 14:05)
#28 а как сделать вывод циклом? Аналог while($arr=sqlite_fetch_array($users){
ни как найти не могу подходящую функцию в этом классе. ООП это такой гемор smile

31. Вантуз-мен (02.07.2009 / 15:46)
можно например сразу поместить все в массив
$arr = $topic->fetchAll();
или как ты хочешь
while($arr = $topic->fetch()...

32. Вантуз-мен (02.07.2009 / 15:48)
можно и так
<?php
while ($result->valid()) {
  // fetch current row
  $row = $result->current();
  echo "
 <tr>
  <td>".$row[0]."</td>
  <td>".$row[1]."</td>
 </tr>";
  // proceed to next row
  $result->next();
}


33. Ден (02.07.2009 / 15:50)
29,пиар такой

34. Вантуз-мен (02.07.2009 / 16:20)
да они вроде как специально сами так написали

35. Удаленный (02.07.2009 / 16:39)
#28, я в sqlite канеш неочень, но с мускулом опыт большой и могу заверить, что код в этом посту - пустая трата ресурсов сервера.
Ты выбираешь все посты из базы, при этом сортируя их в обратном порядке по дате добавления. Затем 1) встроенной функцией склайт узнаешь последний пост, 2) юзаешь numrows для подсчета всего числа сообщений. Все правильно? Теперь смотри. Сообщений в базе может быть тысячи и даже десятки тысяч. Нафига нам все это сортировать? Не проще ли 1) выбираем только интересующий нас пост, 2) юзаем select count(*) для подсчета общего числа постов(для этого создаем отдельную квери)
Таким образом, прогоняем ресурсоемкую квери $allposts только один раз вмесо двух! Да, оно мелочь, но если в скрипте таких моментов десяток или больше, экономия будет исчисляться сотнями милисекунд. Я знаю о чем говорю, когда дело касается БД и быстродействии.

36. Удаленный (02.07.2009 / 16:53)
Опыт приходит с практикой smile

37. Вантуз-мен (02.07.2009 / 19:04)
Dark_Knight там пример такой, в sqlite можно посчитать через count только так, пример
$ptotal = $db->singleQuery("SELECT count(*) FROM posts WHERE topic_id='".$arr['topic_id']."';");
а в том примере как раз и нужны все сообщения

38. Удаленный (03.07.2009 / 02:00)
Проверил ради интереса оба способа.
Скрипт (там много всего так что сами цифры не важны, только разница)
Без этих запросов: 0.009
С вариантом #28: 0.0185
С вариантом #35: 0.0290
комментарии излишни smile
чем больше бд тем больше будет разница

39. Вантуз-мен (03.07.2009 / 03:33)
rаmzes ну по идее да, так как в моем примере только одно подключение, а 35 предлагает 2 подключения
вы свои примеры приведите

40. Удаленный (03.07.2009 / 17:16)
Да мне вобщем то и приводить не чего. Я только учусь по немногу. Вот нашел, пытаюсь понять. Ускорение записи в бд. Очень существенное. Но сам не пробывал. Судя по тестам мускул проигрывает последний рубеж. smile
http://habrahabr.ru/blogs/webdev/42121/

41. Удаленный (03.07.2009 / 23:01)
судя по всему, из этой статьи ты взял только часть, чтобы сделать такой вывод

42. Удаленный (04.07.2009 / 01:02)
<< Однако если выполнять все итерации в одной транзакции, то он оказывается быстрее MySQL (все выполняется в Ubuntu Server)
SQLite:
Average time: 0.00223562335968
MySQL:
Average time: 0.00963790082932 >>

43. Удаленный (04.07.2009 / 01:05)
Этот вывод сделал не я. Этот вывод сделали те кто тестировали обе субд на скорость.smile я еще не пробывал обьединять запросы.

44. Studentsov (06.07.2009 / 23:50)
Читал-читал и нифига не понял D что ж таки рулил?

45. smartvbxos7 (06.07.2009 / 23:55)
Угу..

46. Удаленный (07.07.2009 / 02:23)
несколько действий за одно обращение. Sqlite в этом выигрывает у мускула. Как и в чтении из бд, судя по данным с офсайта.

47. Danis (07.07.2009 / 10:24)
С мускулом тоже можно сделать несколько действий за одно обращение

48. Studentsov (07.07.2009 / 11:45)
A series of tests were run to measure the relative performance of SQLite 2.7.6, PostgreSQL 7.1.3, and MySQL 3.23.41.
Да, свежие версии

49. Удаленный (07.07.2009 / 11:56)
Там и сколайт не последняя версия. Последняя на много быстрее этой.
#48 все равно в этом действий мускул проигрывает. Как и в чтенииsmile гм... Тема то не о том что быстрее.

50. Сергей (07.07.2009 / 13:44)
понятно, что выигрывает SQLite у мускула, но связка пхп+мускул используется традиционно ( :
мануалов по мускулу хоть отбавляй, а со скулайтом вижу 4то проблемы, да и не на всех хостингах установлена последняя версия
так что если не охота замарачиваться, то мускул в помощь (=

51. Удаленный (07.07.2009 / 13:58)
Ну насчет заморачиваться ты не прав.
Не сложнее мускула.
Гостевая книга со SqLite
от нечего делать статейку писал простенькую.

52. Сергей (07.07.2009 / 15:17)
52, я имею ввиду не надо замора4иваться насчет докуметации)

53. Удаленный (07.07.2009 / 15:56)
Дык там почти одинаково все smile минимальные различия

54. Вантуз-мен (02.08.2009 / 17:11)
такое ощущение что в php 5.3.0 sqlite3 вообще не доработан
процедурных функций нет вообще, через ООП большинства функций тоже нет
а через PDO мне неохота работать
или может я не так установил новую версию или не до конца разобрался

55. AlkatraZ (03.08.2009 / 11:36)
#55 Походу нет резона ориентироваться на самую последнюю версию SqLite, ибо мало на каких хостингах она стоит.
Есть резон писать так, чтоб инсталлятор определял, какая версия на хостинге, если 2 - то инклюдит к примеру файл sqlite2.php если 3 версия, то sqlite3.php а уж в каждом из этих файлов можешь прописать специфические процедуры для каждой версии.

56. Вантуз-мен (03.08.2009 / 15:00)
Да вот хотелось сразу на 3 sqlite писать, что-то я сильно разочаровался в нем

57. AlkatraZ (03.08.2009 / 16:57)
Я кстати рекомендую глянуть на аналогичный класс в phpBB 3 http://www.phpbb.com/about/features там есть поддержка кучи баз и в том числе SqLite, глянь, как у них решена проблема совместимости.

58. Вантуз-мен (10.08.2009 / 14:29)
посмотрел я phpbb там все сделано через процедурный режим, а в php 5.3.0 нет таких функций
к примеру
print_r(get_extension_funcs("sqlite3")); не выводит ничего
а на денвере у меня 5.2.4 там список функций
в sqlite3 если через ООП то там довольно ограниченный список нет к примеру fetchAll хотя бы

59. AlkatraZ (15.08.2009 / 14:52)
#59 Да глупости, не заморачивайся на том, что толпа кричит.
Все говорят "клаззы здорово, процедурный режим ерунда", а ПОЧЕМУ, никто объяснить не может.
Доходит до идиотизма, когда для простой функции времени генерации страницы, пишут отдельный класс. Ты считаешь, что это хорошо? (я например считаю, что ужос).
---
Полюбому, надо писать так, чтоб было ОПТИМАЛЬНО и удобно.
Не пашет класс SqLite, пишем свой гг.
Зачастую он оказывается меньше и удобнее, чем делают разработчики, ибо им нужна унивекрсальность, а нам нужно решить НАШУ задачу.

60. Вантуз-мен (15.08.2009 / 15:00)
ну по идее да, любой скрипт на классах будет чуть медленнее чем на функциях, преимущество классов в их расширяемости и универсальности, хотя на функциях можно сделать не хуже и даже лучше
да я уж решил на pdo писать, немного конечно сложновато для начала, так как много не понятно там, но по скорости что интересно pdo-sqlite3 превосходит немного встроенный sqlite3
я пока что уже переписал приватную почту

61. AlkatraZ (15.08.2009 / 17:12)
Поидее, нужно написать файл-модуль для SqLite (будет это класс, или набор функций - это отдельный разговор).
В этом модуле ты прописываешь стандартные (для твоего двига) процедуры, и далее, ВЕСЬ двиг общается ТОЛЬКО через эти процедуры (или функции).
Достоинство в том, что если захочешь, к примеру, вместо SqLite использовать к примеру MySQL, в двиге нужно будет заменить всего один файл (эту подстановку можно делать при инсталляции).
Как собственно и делают и в phpPP3 и в Drupal и др..
---
Для ярых сторонников "классов" справка smile
phpMyAdmin написан полностью в "процедурном" варианте, то есть не на классах.

62. AlkatraZ (15.08.2009 / 17:13)
"мораль сей басни" такова, что к своей цели надо идти кратчайшим путем. А будет это класс, или процедура - это уже для конечногог пользователя мелочи, которого не волнует "что внутри", важно, чтоб все работало хорошо и надежно smile

63. Удаленный (15.08.2009 / 19:05)
Я чёт тоже думаю процедурами получше будет... тоже двиг пишу почти полностью на функциях

URL: https://visavi.net/topics/932