суббота, 14 ноября 2009 г.

MySQL, или удобное хранение данных.

Собственно, что такое MySQL? Это средство для удобного хранения информации. Согласитесь с файлами работать неудобно, а особенно это неудобство чувствуется если их очень много. А MySQL спокойно справляется с 25-гигабайтной базой..не без напрягов конечно, но в целом весьма неплохо.
Итак SQL-Структурированный Язык Запросов. "Почему же я заговорил о нем, ведь данный ресурс посвящен PHP",-думаете вы. Да все просто. В PHP очень хорошо реализована схема работы c базами данных (БД) MySQL. Приведу простой пример, если вы ничего не понимаете в MySQL не расстраивайтесь, пока вам это и не нужно, позднее постараюсь немного обьяснить что к чему. Сейчас лишь разберитесь как с ним общается PHP.

0;");
//посылаем запрос к MySQL

if(mysql_num_rows($query))
{
//mysql_num_rows возвращает количество строк выбранных в БД
while($data = mysql_fetch_assoc($query))
{
//В цикле берем результат запроса в массив и выводим

print '
';

print_r($data);

print '

';
}
}
?>

Итак что же за белиберда здесь написана? Для начала нам надо подсоединиться к MySQL для этого используем mysql_connect, где первый параметр сервер к которому подключаемся, второй-имя пользователя БД, третий-пароль пользователя БД. После чего выбираем БД с которой хотим работать с помощью mysql_select_db. Далее, шлем составленный нами, запрос к серверу. Получаем идентификатор (ресурс id наподобие идентификатора открытого файла) и читаем результаты в массив при помощи цикла while и оператора mysql_fetch_assoc. Но перед этим, чтобы цикл нам не выдал ошибки, нужно проверить, а есть ли вообще результаты. В этом поможет функция mysql_num_rows, которая считает количество результатов, возвращенных MySQL. Конечно это примитивный пример, но функции эти основные, без которых освоиться с MySQL будет просто нереально. Настоятельно рекомендую почитать в мануале как они ведут себя.
Так же, часто можно использовать вместо mysql_fetch_assoc другую функцию mysql_fetch_array, которая в зависимости от параметра создает или ассоциативный или пронумерованный или смешанный массив результатов. Достаточно часто это бывает очень удобно. При работе с базами данных надо всегда помнить, что большое количество запросов, или очень сложные запросы, могут сильно напрячь сервер и, если вы хоститесь, у обыкновенного хостера, а не на ВДС или Дедике надо как можно сильнее оптимизировать работу с MySQL. К примеру настоятельно не рекомендуется использовать в цикле запросы, даже очень простые. На странице, на мой взгляд, не должно быть более 20-30 запросов (в зависимости от посещаемости ее пользователями, возможно, если нельзя отказаться от запросов, стоит как-то кэшировать ее) . Ну на этом пожалуй закончу, ибо о MySQL можно говорить довольно долго и существует очень много различных аспектов работы с ней. В дальнейшем постараюсь вернуться к этому вопросу и, как можно более подробно, в рамках моего ресурса разумеется, описать MySQL