Введение в базу данных Sqlite

Введение в базу данных Sqlite

От автора: при разработке веб-приложений всегда возникает вопрос, где и в каком виде хранить данные. Конечно же их можно хранить в базе данных, либо в текстовых файлах используя специальные разделители. Но что делать, если Вы хотите хранить информацию в базе данных, а приложение у Вас очень простое. В этом случае нерационально использовать целый сервер базы данных MySql.

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

План урока

    1. Введение

    2. Подключение модуля базы данных sqlite

    3. Создание базы данных и таблиц

    4. Заносим данные в базу данных

    5. Вывод информации из базы данных

Детали учебника

Тема: PHP

Сложность: Средняя

Урок: Видео (.mp4)

Время: 01:38:51

Размер архива: 110 Mb

скачать исходникискачать урок

1. Введение.

Для начала давайте определимся, что же такое база данных Sqlite и какие у нее преимущества перед базами данных серверного типа.

Sqlite – это встраиваемая реляционная база данных, с открытым исходным кодом. То есть она не использует привычную нам модель работы базы данных клиент-сервер и не является отдельным работающим процессом. Как например база данных Mysql. Другими словами движок Sqlite становится как бы частью нашего веб-приложения. При таком подходе база данных Sqlite (со всеми таблицами) представляет собой обычный текстовый файл, который вы можете расположить в удобном для Вас месте.

Теперь давайте рассмотрим основные преимущества Sqlite.

Самодостаточность – базе данных Sqlite не требуется отдельный сервер для работы. Движок Sqlite встраивается прямо в приложение и требует только доступ к файлам.

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

Встраиваемость – движок Sqlite полностью встроен в PHP 5 и не требуется установка дополнительного программного обеспечения.

Предоставляет как процедурный, так и объектно-ориентированный интерфейс для работы.

Высокая производительность – движок потребляет очень мало ресурсов и не тратится время на отправку данных к отдельному выделенному серверу.

Sqlite замечательно подходит для веб-приложений, когда основная масса запросов представляет собой запросы на чтение, также очень хорошо подойдет для небольших проектов и проектов которые в дальнейшем Вы собираетесь развивать. Так как Sqlite работает с такими же SQL запросами, что и базы данных серверного типа а это дает нам возможность легко перейти на другую базу данных, не внося кардинальных изменений в логику веб-приложения (особенно используя расширение PDO).

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

2. Подключение модуля базы данных sqlite

Для начала необходимо убедиться, что модуль базы данных sqlite, подключен в файле php.ini. Для этого откройте данный файл (для тех, у кого установлен Денвер, файл находится по адресу \usr\local\php5\php.ini) и найдите строчку:

;extension=php_sqlite.dll

Далее просто уберите точку с запятой в начале строки, сохраните изменения в файле и перезапустите сервер Apache (или Денвер), у вас строка должна быть вот такого вида:

extension=php_sqlite.dll

На реальных серверах (хостингах) этот модуль уже поключен.

3. Создание базы данных и таблиц.

Первым делом необходимо создать базу данных и необходимые таблицы в ней. Для этого давайте создадим файл config.php, в котором создадим константу DB_NAME для хранения имени базы данных. Вот код файла config.php:

<?php
define('DB_NAME','mydb.db');
?>

Как я и говорил в начале, база данных в sqlite – это обычный текстовый файл (специально отформатированный), поэтому указывая имя базы данных, не забывайте указывать расширение, в моем случае это .db, но это не принципиально, расширение можно ставить какое угодно.

Теперь давайте создадим файл install.php, в котором и создадим базу данных с требуемым набором таблиц. Для этого открываем в файле PHP –теги и начинаем кодировать. Для начала подключим файл конфигурации config.php:

include 'config.php';

Затем создадим базу данных, используя функцию sqlite_open(‘имя базы данных’). Если базы данных еще не существует, то эта функция создает базу данных, с именем переданным ей параметром, открывает ее для работы и возвращает дескриптор подключения (в нашем случае дескриптор сохранился в переменную $db). Если же база данных существует – то функция просто открывает базу данных и возвращает дескриптор подключения. Ниже привожу код необходимый для создания базы данных:

$db = sqlite_open(DB_NAME);
if(!$db) {
	exit('ERROR'.sqlite_error_string(sqlite_last_error($db)));
}
echo 'База данных '.DB_NAME. ' создана<br>';

Как Вы видите, я после вызова функции sqlite_open(имя базы данных), сделал небольшую проверку – на то не возникли ли при создании базы данных ошибки. Если возникла ошибка, то происходит выход из скрипта с выводом текста ошибки на экран.

Для вывода ошибок базы данных sqlite на экран необходимо использовать две функции. Первая это функция: sqlite_last_error(дескриптор подключения к базе), которая возвращает код ошибки. Вторая — sqlite_error_string(код ошибки), которая расшифровывает код ошибки, и возвращает непосредственно текст ошибки.

Теперь давайте перейдем в браузер и запустим файл install.php. На экране появилась строка — База данных mydb.db создана. Теперь посмотрите в папку где располагается наш скрипт и Вы увидите что был создан текстовый файл База mydb.db – это и есть наша база данных.

Теперь необходимо создать две таблицы: таблицу menu для хранения пунктов меню и таблицу articles для хранения, каких-то статей нашего мини-сайта. Первым делом создадим таблицу menu. Вот код для ее создания:

// запрос к базе данных
	$sql = "CREATE TABLE articles 
			(
			id_articles INTEGER PRIMARY KEY,
			name_articles,
			text_articles
			);
			";
	//выполняем запрос
	$result = sqlite_query($db,$sql);
	if(!$result) {
		exit('ERROR'.sqlite_error_string(sqlite_last_error($db)));
	}
	else {
		echo 'Таблица articles создана<br>';
	}

Как Вы видите, первым делом создаем sql запрос к базе данных. Он очень похож на запрос к базе данных MySql. Но есть отличия в объявлении типов данных, которые должны хранится в столбцах таблицы. В простейшем случае типы данных можно вообще не указывать, при этом данные будут вставлены как строки. База данных sqlite версии 2 имела всего несколько типов данных, а именно INTEGER и текстовый тип данных, для хранения больших объемов текста.

В более старших версиях, начиная с версии 2.7.0 были введены различные типы текстовых полей, такие как BLOB, CHAR, CLOB, TEXT, в версии 3.0 созданы специальные классы данных NULL, INTEGER, REAL,TEXT, BLOB, которые включают в себя дополнительные типы данных.

Но в любом случае типы данных в базе данных sqlite – декларативные, то есть какой бы не был указан столбцу класс – в него можно положить любые данные, как текстовые так и числовые. Исключение составляет только поля, у которых назначен тип данных INTEGER PRIMARY KEY, — эта запись означает, что поле является первичным ключом и тип данных в нем должен быть обязательно числовым. При этом поле автоматически получает свойство AUTOINCREMENT.

После создания запроса к базе данных, необходимо его выполнить. Для этого применяем функцию sqlite_query(дескриптор подключения, запрос). Эта функция аналогична функции mysql_query() – то есть она выполняет запрос к базе данных и возвращает результат запроса. Первым параметром ей передаем дескриптор подключения к базе данных, вторым – непосредственно сам запрос. Затем выполняем стандартную проверку на наличие ошибок.
Давайте перейдем в браузер и посмотрим что у нас получилось. После обновления страницы на экране появляется строка – Таблица articles создана. Значит все правильно.

Теперь создадим вторую таблицу menu. Вот код для ее создания:

// запрос к базе данных
	$sql2 = "CREATE TABLE menu 
			(
			id_menu INTEGER PRIMARY KEY,
			name_menu,
			link_menu
			)
			";
	//выполняем запрос	
	$result2 = sqlite_query($db,$sql2);
	if(!$result2) {
		exit('ERROR'.sqlite_error_string(sqlite_last_error($db)));
	}
	else {
		echo 'Таблица menu создана<br>';
	}

Как Вы видите здесь все аналогично таблице articles. Теперь давайте приведу весь код файла install.php:

<?php
include 'config.php';

if(!file_exists(DB_NAME)) {
	$db = sqlite_open(DB_NAME);
	if(!$db) {
		exit('ERROR'.sqlite_error_string(sqlite_last_error($db)));
	}
	echo 'База данных '.DB_NAME. ' создана<br>';
	
	// запрос к базе данных
	$sql = "CREATE TABLE articles 
			(
			id_articles INTEGER PRIMARY KEY,
			name_articles,
			text_articles
			);
			";
	//выполняем запрос
	$result = sqlite_query($db,$sql);
	if(!$result) {
		exit('ERROR'.sqlite_error_string(sqlite_last_error($db)));
	}
	else {
		echo 'Таблица articles создана<br>';
	}
	
	// запрос к базе данных
	$sql2 = "CREATE TABLE menu 
			(
			id_menu INTEGER PRIMARY KEY,
			name_menu,
			link_menu
			)
			";
	//выполняем запрос	
	$result2 = sqlite_query($db,$sql2);
	if(!$result2) {
		exit('ERROR'.sqlite_error_string(sqlite_last_error($db)));
	}
	else {
		echo 'Таблица menu создана<br>';
	}
	sqlite_close($db);
	echo 'База даных закрыта...';	
}
else {
	exit('База данных уже существует');
}
?>

Обратите внимание, я сделал еще одну проверку на существование файла базы данных. Если его нет, то мы создаем базу данных и необходимые таблицы, если же он есть, то выводим на экран сообщение ‘База данных уже существует’. В конце попросту закрываем соединение с базой данных при помощи функции sqlite_close(дескриптор подключения); Давайте перейдем в браузер и посмотрим что получилось:

Введение в базу данных Sqlite

Как видите, база данных создана с двумя табличками.

4. Заносим данные в базу данных.

Теперь, когда у нас есть база данных необходимо ее наполнить. Для этого предлагаю сделать очень простую администраторскую панель для нашего сайта. В которой, будет всего две формы для добавления данных. Первая для добавления пунктов меню, вторая для добавления статей.

Давайте создадим файл admin.php, с таким содержимым:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Admin panel</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="wrap">
<h2>ADMIN PANEL</h2>
	<div id="insert_menu">
	<p>Добавление нового пункта меню</p>
		<form name="insert_menu" method="POST">
			Name menu<br>
			<input type="text" name="name_menu">
			<br>Link<br>	
			<input type="text" name="link_menu">
			<br>	
			<input type="submit" name="submit_menu">
		</form>
	</div>
	
	<div id="insert_articles">
	<p>Добавление новой статьи</p>
		<form name="insert_articles" method="POST">
			Name article<br>
			<input type="text" name="name_articles">
			<br>Text<br>	
			<textarea name="text_articles" rows="10" cols="34"></textarea>
			<br>	
			<input type="submit" name="submit_articles">
		</form>
	</div>
	<div id="footer">
		<h4>footer</h4>
	</div>
</div>
</body>
</html>

Как Вы видите – обычная html-разметка, две формы заключенные в общий контейнер, небольшая шапка и футер. Так же обратите внимания, что я подключаю файл стилей style.css, который необходимо также создать. Вот его код:

#insert_menu {
	width:300px;
	float:left;
	padding:10px;
}
#insert_articles{
	width:300px;
	float:left;
	padding:10px;
	border-left:1px solid #074776;
	margin-bottom:20px;
}
h2 {
	border-bottom:20px solid #d3d3d3;
}
#wrap{
	width:950px;
	margin:0px auto 0px auto;
	border:1px solid #074776;
	
	padding:10px;
}
#footer {
	clear:both;
	text-align:center;
	border-top:20px solid #d3d3d3;
}

Теперь если набрать в браузере только что созданный файл admin.php, мы увидим следующее:

Введение в базу данных Sqlite

Теперь давайте создадим файл functions.php, в котором мы будем хранить наши пользовательские функции. Первая функция, что мы опишем будет функция очистки данных clear($str), так как нам приходят данные из формы, а их необходимо фильтровать. Итак, код функции:

function clear($str) {
	$str = trim($str);
	$str = strip_tags($str);
//проверяем включена ли директива конфигурации magic_quotes_gpc
	if(get_magic_quotes_gpc()) {
		$str = stripslashes($str);
	}
	$str = sqlite_escape_string($str);
	
	return $str;
}

Как Вы видите все просто, стандартные функции. Но здесь есть одно замечание: не рекомендуется вставлять данные в базу данных, у которых экранированы спецсимволы при помощи функции addcslashes(). Поэтому проверяем, если у пользователя включено экранирование спецсимволов (директива конфигурации magic_quotes_gpc), то убираем экранирующие бэкслэши при помощи функции stripslashes($str). Для экранирования спецсимволов у базы данных sqlite есть своя функция sqlite_escape_string(строка), которая экранирует спецсимволы в строке для дальнейших запросов.

Возвращаемся в файл admin.php и создадим обработчик формы, вот его код (вставляем перед тегами html):

<?php
session_start();
include 'config.php';
include 'functions.php';

//проверяем отправлена ли форма
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	
	//открываем базу данных
	$db = sqlite_open(DB_NAME);
	if(isset($_POST['submit_menu'])) {
		
		//Очищаем полученные данные
		$name_menu = clear($_POST['name_menu']);
		$link_menu = clear($_POST['link_menu']);
		
		//вставляем данные в базу данных
		$msg = insert_menu($db,$name_menu,$link_menu);
		if($msg === TRUE) {
			$_SESSION['msg'] = 'Пункт меню добавлен';
		}
		else {
			$_SESSION['msg'] = $msg;
		}
	}
//перенаправляем страницу саму на себя для очистки POST данных
	header('Location:'.$_SERVER['PHP_SELF']);
}
?>

Итак, в начале открываем сессию – для системных сообщений. Затем подключаем файл functions.php. Далее если была отправлена форма, вначале открываем базу данных, очищаем полученные данные и вызываем функцию insert_menu ($db,$name_menu,$link_menu), которая вставляет данные в базу данных (мы ее чуть позже опишем). Функция принимает три параметра: первый дисриптор подключения к базе данных, второй и третий данные которые необходимо вставить. Она будет возвращать TRUE, если данные успешно вставились в базу, и сообщение о ошибке, в случае неудачной вставки данных.

Теперь пока у нас открыт файл admin.php давайте вставим вывод системных сообщений, которые будут хранится в сессии. Этот код вставляем после заголовка второго уровня ADMIN PANEL:

<p>
<? echo $_SESSION['msg'];?>
</p>

Теперь открываем файл functions.php и описываем функцию insert_menu():

function insert_menu($db,$name_menu,$link_menu) {
	
	//SQL запрос
	$sql = "INSERT INTO 
			menu(name_menu,link_menu) 
			VALUES('$name_menu','$link_menu')";
	
	//выполняем запрос
	$result = sqlite_query($db,$sql);
	if($result) {
		return TRUE;
	}
	else {
		return 'Ошибка выполнения запроса '.sqlite_error_string(sqlite_last_error($db));
	}
}

Как Вы видите, данные в базу данных sqlite вставляются точно также как и в базу данных mysql. Смотрите, точно такой же SQL-запрос, единственное отличие – это то, что мы используем функцию sqlite_query() для выполнения запроса. Если запрос успешно выполнен возвращаем TRUE, если нет, то возвращаем сообщение об ошибке. Давайте перейдем в браузер и попробуем добавить данные в таблицу menu. Запускаем файл admin.php и вводим данные в форму. После нажатия на кнопку отправки формы, на экран выводится надпись что данные успешно добавлены.

Введение в базу данных Sqlite

Теперь осталось реализовать добавление статей в базу данных. Для этого создадим функцию insert_articles(), которая аналогично функции insert_menu(), будет вставлять данные в базу, и возвращать при этом либо TRUE, либо сообщение об ошибках, в зависимости от результата.

Вот код функции insert_articles() (она также принимает три параметра: первый это дескриптор подключения, второй и третий данные которые необходимо вставить в базу):

function insert_articles($db,$name_articles,$text_articles) {
	
	//SQL запрос
	$sql = "INSERT INTO 
			articles(name_articles,text_articles) 
			VALUES('$name_articles','$text_articles')";
	
	$result = sqlite_query($db,$sql);
	
	if($result) {
		return TRUE;
	}
	else {
		return 'Ошибка выполнения запроса '.sqlite_error_string(sqlite_last_error($db));
	}
}

Как Вы видите здесь все аналогично. Теперь возвращаемся в файл admin.php и добавляем обработчик для второй формы. Для этого вставляем следующий код, сразу после закрывающей скобки условного оператора if, который проверяет, существует ли в массиве POST ячейка с ключем $_POST['submit_menu']:

if(isset($_POST['submit_articles'])) {
		
		//Очищаем полученные данные
		$name_articles = clear($_POST['name_articles']);
		$text_articles = clear($_POST['text_articles']);
		
		//вставляем данные в базу данных
		$msg = insert_articles($db,$name_articles,$text_articles);
		if($msg === TRUE) {
			$_SESSION['msg'] = 'Статья добавлена';
		}
		else {
			$_SESSION['msg'] = $msg;
		}
	}

То есть, попросту говоря, проверяем нажата ли кнопка отправки формы. Если да то очищаем данные и вызываем функцию insert_articles().

Теперь давайте попробуем добавить текст в базу. После отправки формы на экран вывелось сообщене Статья добавлена, значит мы все делаем правильно.

5. Вывод информации из базы данных.

Теперь, когда данные добавлены в базу данных, давайте реализуем вывод этих данных на экран. Для этого создадим файл index.php вот с такой html-разметкой:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Добро пожаловать</title>
<meta name="" content="">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="wrap">
	<div id="header">
		<h1>Visitka</h1>
	</div>
	<div id="menu">
		
	</div>
	
	<div id="text">
		
	</div>
	<div id="footer">
	<h4>footer</h4>
	</div>
</div>
</body>
</html>

И в файл style.css добавим несколько правил:

#menu {
	width:200px;
	float:left;
	
}
#text {
	float:left;
	width:700px;
	border-left:2px solid #d3d3d3;
	padding:10px;
}
#header{
	height:150px;
	width:100%;
	border-bottom:20px solid #d3d3d3;
}
h1 {
	text-align:center;
}

Как Вы видите, также ничего сложного здесь нет обычный html и css. Теперь давайте перейдем в браузер и посмотрим что у нас получилось:

Введение в базу данных Sqlite

Теперь вернемся к файлу index.php и перед html- разметкой откроем php теги. Затем откроем сессию, подключим конфигурационный файл и файл functions.php, откроем базу данных для работы и вызовем функцию get_menu(), которая будет возвращать массив пунктов меню, хранящихся в базе данных, и функцию get_articles(), которая будет возвращать массив статтей. Вот данный код:

<?php
session_start();
//подключаем файли
include 'config.php';
include 'functions.php';
//открываем базу для работы
$db = sqlite_open(DB_NAME);
//получаем массив пунктов меню
$menu = get_menu($db);
if(!$menu) {
	exit(sqlite_error_string(sqlite_last_error($db)));
}
//получаем массив статтей
$text = get_articles($db);
if(!$text) {
	exit(sqlite_error_string(sqlite_last_error($db)));
}
?>

Теперь перейдем в файл functions.php и опишем функции get_menu() и get_articles(). Вот код для этих функций:

function get_articles($db) {
	// SQL - запрос
	$sql = "SELECT id_articles,name_articles,text_articles FROM articles";
	
	//выполняем запрос и возвращаем асоциативный массив данных
	$result = sqlite_array_query($db,$sql,SQLITE_ASSOC);
	
	if(!$result) {
		return FALSE;
	}
	return $result;
	
}

function get_menu($db) {
	
	// SQL - запрос
	$sql = "SELECT name_menu,link_menu FROM menu";
	
	//выполняем запрос и возвращаем асоциативный массив данных
	$result = sqlite_array_query($db,$sql,SQLITE_ASSOC);
	
	if(!$result) {
		return FALSE;
	}
	return $result;
}

Как Вы видите, функции принимают параметром дискриптор подключения к базе данных. Давайте поясню работу функций на примере функции get_menu(), так как функция get_articles() — аналогична ей.

Как обычно формируем SQL – запрос, он точно такой же как и в базе данных Mysql. Выбираем поля name_menu и link_menu из базы данных menu. Далее обратите внимание на очень интересную функцию sqlite_array_query(дескриптор, SQL – запрос, параметр как возвращать данные). Такой функции нет в базе данных Mysql!!. Смотрите — эта функция выполняет переданный ей SQL – запрос и сразу же возвращает уже готовый реальный массив данных (в нашем случае ассоциативный так как мы передали ей константу SQLITE_ASSOC, что означает вернуть данные в виде ассоциативного массива). Так что нам остается лишь возвратить этот массив данных.

Конечно же, можно было воспользоваться функцией sqlite_query(), а затем в цикле получить ассоциативный массив с помощью функции sqlite_fetch_array(результат выполненного запроса, параметр как возвращать данные), которая выполняет абсолютно те же действия, что и для базы данных mysql(mysql_fetch_array()).

Но, согласитесь, использовать функцию sqlite_array_query() намного удобнее и быстрее.

Теперь, когда у нас есть данные в виде массивов, осталось только их вывести на экран с помощью цикла foreach. Вот код который нужно вставить в файл index.php в блоки div с идентификаторами menu и text соответственно:

Для блока menu

<?php
if($menu) {
	echo "<ul>";
	foreach($menu as $item) {
		echo "<li><a href='".$item['link_menu']."'>".$item['name_menu']."</a></li>";
	}
	echo "</ul>";
}
?>

Для блока text

<?php
if($text) {
				
	foreach($text as $item2) {
	echo "<h3><a href='?id=".$item2['id_articles']."'>".$item2['name_articles']."</a></h3>";
	echo "<p>".$item2['text_articles']."</p>";
	}
				
}
?>

Итак, перейдем в браузер и посмотрим что получилось:

Введение в базу данных Sqlite

Как Вы видите данные успешно вывелись на экран.

Итак в этом видео уроке мы с вами кратко рассмотрели базу данных Sqlite. Мы научились создавать базу данных, добавлять в нее требуемые таблицы, вставлять данные а также научились выводить данные на экран. Самые основные базовые операции с движком Sqlite мы с Вами изучили, остальные же точно такие как и в базе данных Mysql (к примеру для удаления или обновления данных — нужно все также составить SQL запрос а далее просто его выполнить с помощью функции sqlite_query()).

Смотрите как быстро мы с Вами создали этот мини сайтик, на основе базы данных Sqlite, теперь при переносе такого сайта на хостинг либо на другой компьютер, достаточно лишь скопировать папку с сайтом, и на этом все. База данных также с копируется так как это обычный текстовый файл.

На этом урок закончен. Если возникнут вопросы пишите, постараемся на них ответить! А на этом все. Удачного Вам кодирования и до новых встреч.

Фреймворк YII2: теория и первая практика

Овладейте азами фреймворка Yii2 за 5 дней!

Получить

Метки: , ,

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (39)

  1. Rokko

    а как со скоростью будет у этого типа БД в сравнении с MySQL?

    • Андрей Кудлай

      Если проект не громоздкий и предполагает преимущественно чтение из БД, то приоритетнее SQLite. Дело в том, что SQLite, как уже говорилось в уроке, не требует для своей работы отдельного сервера, т.е. эта БД самодостаточна. Поскольку нет отдельного сервера, то и не нужно к нему подключаться, а эта операция (подключение) как раз и отнимает львиную долю времени при работе с сервером баз данных.

  2. Владимир

    Все здорово объяснено!!!
    Вы меня заинтриговали :-) Решил попробовать. Раньше использовал MySQL.
    Но в моем Denver’e в PHP.ini кое-что отличается и SQLite не понимается :-(
    Если не сложно, то ответьте: как настроить версию Denver’a из имеющихся сейчас на оф.сайта. Какую из них скачать?
    Заранее благодарю

  3. Виктор Гавриленко

    Здравствуйте!
    Для того что бы настроить SQLite, необходимо просто раскомментировать подключение модуля SQLite.
    Я только что скачал последнюю версию Денвера на оф сайте (версия с php 5.3). И Вы правы база данных не работает. Потому что необходимо скачать пакет расширений. Для этого в правом верхнем меню есть пункт расширения, и при наведении мыши на него выпадает меню. В этом меню — верхний пункт — МОДУЛИ PHP5, кликаете по этому пункту, а затем по ссылке Скачать пакет расширения: модули PHP5 (6M). Далее просто устанавливаете как обычно. Затем необходимо в файле php.ini(usr/local/php5/php.ini) раскомментировать строку №
    991 (extension=php_sqlite.dll — убрать вначале этой строки точку с запятой).
    Только если Вы раскомментировали эту строку перед установкой пакета расширений — ее необходимо будет раскомментировать заново, так как после установки конфигурация обновится.

  4. Dmitry

    Спасибо) Не знал о таком, так как работаю с клиентской стороной. В связи с этим к Вашей команде вопрос: что-то отдаленное я читал в хранение данных в HTML5. А если в Windows 8, будет поддерживать SQLite, то я смогу воспользоваться этой базой данных на стороне клиента, используя JavaScript?

  5. Владимир

    Виктор, СПАСИБО за быстрый ответ. Все задышало :-)
    Да меня смутила фраза на их сайте: «В состав базового пакета Денвера, помимо стандартного набора модулей, входят только следующие библиоткеки: sqLite, iconv, GD2, MySQL и MySQLi, PDO. Другие дополнительные модули (например, PostgreSQL, mbstring, и библиотеки PEAR и т.д.) поставляются в данном пакете расширения.».
    Поэтому и не устанавливал дополнительные модули.
    Еще раз спасибо!

  6. Dmitry

    Допустим, я всё это сделаю на денвере и получу такой же результат. Вопросы:
    1. Можно ли в текст вставить картинку? Если ДА, то как?
    2. Как полученный результат перенести в контент Битрикс-1С? Возможно ли просто создать папку и перенести туда содержимое, а на лицевой стороне сайта сделать ссылку на файл (как я понял) index.php ?

    • Виктор

      Не понял вопроса. В базе данных можно хранить только текстовую информацию. Можно сохранить путь к картинке.
      По битриксу также непонятно что вы имели ввиду. В уроке я показал как работать с базой данных.

  7. Павел Горбунов

    Возникла такая проблема — в браузере выводится : «Call to undefined function sqlite_open()»
    У меня стоит Денвер. Не хватает какой-то библиотеки или проблема может быть в чем-то другом???
    Это — не только для меня одного, думаю, многие начинающие столкнутся с этим.

    • Андрей Кудлай

      Павел, прочитайте выше комментарий автора урока от 06.08.2012 в 22:19. Полагаю — это как раз Ваш случай.

      • Павел Горбунов

        Комментарий не помог, я скачал полный дистрибутив PHP5 и скопировал из него файлы .dll. Все работает, спасибо за урок.
        Было очень интересно, жду следующих скринкастов по SQLite и MySQL с нетерпением!

  8. Павел Горбунов

    Важен ли порядок применения функций для обработки формы — trim(),strip_tags(),stripslashes(),
    sqlite_escape_string();
    Будет нормально, если вместо такого порядка :
    $str = trim($str);
    $str = strip_tags($str);
    $str = stripslashes($str);
    $str = sqlite_escape_string($str);

    написать подобным образом:
    $data = stripslashes($data);
    $data = strip_tags($data);
    $data = trim($data);
    $data = sqlite_escape_string($data);
    ???

  9. Павел Горбунов

    Вообще, SQLite —
    то не база данных, а СУБД.
    В принципе, выражение «база данных SQLite» — неверно.
    Будет гораздо лучше, если Вы исправите эту ошибку.

    • Андрей Кудлай

      Если подходить с точки зрения формализма, то могу с Вами согласиться. Но уж так повелось, что термины «БД MySQL, БД SQLite и т.д.» также довольно часто употребляются с той же смысловой окраской. При этом употребление этих терминов можно встретить довольно часто и в серьезных источниках (Википедия, русскоязычный сайт SQLite, статьи на авторитетных сайтах по PHP). Кстати, на официальном сайте SQLite можно найти это название только вкупе с термином библиотека.
      P.S. Интересный вопрос — а как назвать БД, созданную и работающую под управлением MySQL, или Oracle, или той же SQLite?.. Я бы сказал — БД MySQL и т.д. ;)

  10. Павел Горбунов

    В чем-то и Вы правы. как назвать БД, созданную и работающую под управлением MySQL, или Oracle, или той же SQLite?
    Я бы сказал просто «база данных». Хотя «БД MySQL» — в данном случае тоже подойдет.
    Ладно, хватит о формальных вещах.
    Вы обещали в ближайшем будущем выпустить цикл уроков по SQL и MySQL. Я сильно жду выпуска этих материалов. Уже скоро будут?

  11. Павел Горбунов

    Честно говоря, так и не смог найти однозначного ответа, какие типы данных поддерживает SQLite, кроме INT, TEXT. Или поддерживаются только эти 2 типа?

  12. Виктор Гавриленко

    Типы дынных в Sqlite декларативные, то есть Вы указываете предпочтительный тип данных. Но в независимости от того какой тип был указан столбцу, в нем можно хранить данные любых типов. В версии 2, как я и говорил в уроке, есть два основных типа INT и TEXT, при том что поле с типом INT в основном используется для создания первичных ключей таблицы с автоинкрементом. В версии 3 же уже добавлены классы для хранения типов данных:

    NULL. Пустое значение в таблице базы.
    INTEGER. Целочисленное значение, хранящееся в 1, 2, 3, 4, 6 или 8 байтах, в зависимости от величины самого значения.
    REAL. Числовое значение с плавающей точкой.
    TEXT. Значение строки текста.
    BLOB. Значение бинарных данных, хранящихся точно в том же виде, в каком были введены.
    Классы это более широкое понятие чем тип данных, к примеру класс INTEGER — включает в себя 6 различных типов целочисленных данных различной длины.

  13. Отари

    Мне очень понравилось!!!

  14. Александр

    Андрей! Скачал пакет расширения: модули PHP5 (6M). Раскомментировал строку №
    991 (extension=php_sqlite.dll
    В результате:База данных mydb.db создана…в браузере
    Кодировка UTF-8, при этом база создалась

  15. Александр

    Андрей! Получилось только для кодировки charset=windows-1251

  16. Иван

    Ребята у кого нормально с языками, поделитесь пожалуйста файлами:
    httpd.conf
    php.ini
    на ivan.-94@mail.ru.
    Перерыл кучу информации так ничего и не смог сделать.
    Буду очень благодарен.

    • Андрей Кудлай

      Не совсем понятно зачем Вам конфигурационные файлы, поскольку конфигурация у каждого может быть своя. Если же Вам все равно какие, то их легко можно получить, к примеру, из установленного дистрибутива Денвера или любого другого пакета.

      • Иван

        С иероглифами вместо русских символов я справился. Делал по примеру данного урока(даже скидывал исходники) браузер ругается на sqlite_open();
        Fatal error: Call to undefined function sqlite_open() in C:\Apache\htdocs\install.php on line 5
        Не могу понять почему.

        • Андрей Кудлай

          Это ответ на мой вопрос о конфигурационных файлах? Ошибка «говорит» о неопределенной функции. Подобные вопросы решаются не в комментариях, а на нашем форуме.

          • Иван

            На счет конфигурационных файлов я ответил что исправил проблему.
            Из-за не правильной настройки у меня вместо русских символов были иероглифы.

  17. DENIS

    Предлагаю посмотреть бесплатный инструмент — Valentina Studio. Супер вещь!!! Очень рекомендую — best manager for SQLite!!! valentina-db.com/en/valentina-studio-overview

  18. Дмитрий

    Здравствуйте ! Скажите пожалуйста, а есть ещё уроки по SqLite или по созданию CMS со SqLite ?

    • Виктор Гавриленко

      Здравствуйте, Дмитрий!
      В данный момент больше уроков по данной теме нет.

  19. Дмитрий

    Перед тем как начать изучать, я решил закинуть исходники на Denver и посмотреть. Вот сразу же и выдало :
    Fatal error: Call to undefined function sqlite_open() in X:\home\webformyself-sqlite\www\index.php on line 7
    И как тут обучаться ?

    • Виктор Гавриленко

      Здравствуйте!
      Так ведь в уроке и показано как работать с данной библиотекой. Ведь sqlite — это расширение которое необходимо подключить в интерпретаторе PHP, иначе будет ошибка.

  20. alexxx-ivanow@yandex.ru

    Виктор, добрый день!

    Спасибо за Ваш урок, с удовольствием его изучил! Хочу задать вопрос:
    я попытался подключить — по Вашему уроку — sqlite к своему уже готовому сайту, у меня всё получилось, загвоздка началась тогда, когда я начал пытаться создать функцию удаления статей на сайте (по аналогии с уроком по гостевой книги Андрея Кудлая, где дополнительно выводится ссылка «удалить» с текущим id).

    При попытку перейти по этой ссылке, сервер (я использую openserver, php 5.3) выдает следующую ошибку: «Warning: include(templates/geo1/inc/content/news.html?id=1) [function.include]: failed to open stream: No error in C:\OpenServer\domains\sqlite\templates\geo1\index.php on line 15

    Warning: include() [function.include]: Failed opening ‘templates/geo1/inc/content/news.html?id=1′ for inclusion (include_path=’.;c:/openserver/modules/php/PHP-5.3;c:/openserver/modules/php/PHP-5.3/PEAR/pear’) in C:\OpenServer\domains\sqlite\templates\geo1\index.php on line 15″

    Я порыл гугл, ничего путного не нашел, точнее, нашел что-то про запрет межсайтового скриптинга, но не смог разобраться…

    Вот кусок кода со ссылкой:


    echo "".$item2['date_news']."Удалить";

    Быть может, Вы сможете подсказать, в какую сторону мне копать?

    Заранее спасибо!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree