Библиотека Интернет Индустрии I2R.ru |
|||
|
MySQL с высоты птичьего полетаДля работы с MySQL, воспользуемся одним из возможных средств - DBI (Data Base Interface). Для этого подключим его к нашей программе. use DBI; В самом начале работы, нам нужно подключиться к MySQL серверу а затем и к БД. Используем для этого такую конструкцию: $dbh = DBI->connect("DBI:mysql:$basaname", Теперь у нас есть дескриптор $dbh с помощью которого, мы можем обращаться к нашей БД. Как правило, он используется для SQL запросов. SQL (Structured Query Language - Язык Структурированных Запросов) - используется для запросов к БД. Конечно слово "Язык" звучит гордо, но дочитав эту статью до конца, вы поймете, что SQL - это очень простой язык и запросы на нем похожи на обычные предложения на английском языке. Итак. Для того что бы сделать запрос к БД, используется метод prepare(). Например: $sth = $dbh->prepare("select NAME Данным запросом, мы просим БД, выдать нам имена всех работников жалование которых превышает 500 у.е. Таблица с работниками может выглядеть так:
Называется она, конечно же, WORKERS. После того, как мы сделали запрос, мы получаем дескриптор запроса $sth из которого можем извлечь любую интересующую нас информацию. Заметьте, что при присвоении дескриптору нового значения, информация о предыдущем запросе теряется. Т.е. если вам нужно сделать запрос и сохранить только что полученную информацию. Используйте в качестве нового дескриптора $sth2 и т.д. Для того что бы извлечь информацию из дескриптора запроса, как правило используется следующая конструкция: while (@row = $sth->fetchrow_array){ За каждый такт цикла while, происходит считывание одной записи из возвращенных MySQL. При этом каждый элемент массива - это одно поле считанной записи. Обычно количество полей можно предсказать при формировании запроса, но если это все таки не возможно (некоторые универсальные скрипты) используйте переменную $#row в ней хранится индекс последнего элемента массива. В своем запросе, мы можем перечислять необходимые поля явно: select NAME, PHONE, AGEа так же использовать следующую конструкцию: select * from WORKERS where SALARY>500; в этом случае, из базы будут выбраны все поля. Неудобство данного способа заключается в том, что нам необходимо знать порядок полей в базе, а это е всегда возможно. Иногда возникает необходимость как-то отсортировать данные. Для этого используется конструкция ORDER BY. Например: select * from WORKERS Сортировать по имени. Хочу заметить, что далеко не на всех серверах работает сортировка русских символов. Дело в том, что на самом деле компьютеру алфавит не известен и сортирует он по кодам соответствующих символов и если в кодировке Win1251 коды символов имеют порядок, то в кодировке KOI (преимущественно используемой на Linux серверах) порядок не наблюдается. Если вам необходимо проделать обратную сортировку, то к запросу добавляется слово DESC select * from WORKERS Помимо функции чтения из БД, бывают очень полезны функции удаления (delete) и изменения (update) и добавления (insert) записи. Рассмотрим их более подробно. INSERTФункция insert предназначена для вставки в БД записи. Например так: insert into WORKERS values В скобках через запятую перечислены значения каждого поля. В данном случае, нам так же необходимо знать порядок полей. Самая распространенная ошибка с функцией insert - это не соответствие типов. Литерные значения и даты, всегда должны указываться в скобках. Очень часто запись имеет уникальный ID (как правило он хранится в первом поле). БД берет на себя заботу о том, что бы ID действительно оказался уникальным, поэтому нам достаточно указать на его месте 0, а система сама вычислит и подставит туда нужное значение. DELETEФункция delete предназначена для удаления записи или записей. Как правило, используется с некоторым условием, поскольку без условия происходит удаление всех записей, а это довольно редкое желание со стороны программиста. Пример: delete from WORKERS Данный запрос удаляет из базы запись поле NAME у которой равно "Vasily A. Pupkin". Если таких записей будет несколько, они все будут удалены. Именно поэтому лучше производить удаление по ID если точно не известно может ли быть еще одна запись с подобным значением. Условия могут быть более сложными. Для этого используются слова OR и AND.delete from WORKERSУдаляем всех Пупкиных и тех у кого жалование меньше 10 у.е. UPDATE Функция update изменяет запись или записи в зависимости от условия. Например: update WORKERS set SALARY=512В данном примере, мы повысили Пупкину жалование. Обращаться с функцией update нужно аккуратно, поскольку если не указать условие, будут изменены все (!) записи. Например: update WORKERS set SALARY=120;У всех одинаковая зарплата - 120 у.е. Заключение В настоящее время большинство хостинг-провайдеров предоставляют всевозможные веб-интерфейсы для формирования и работы с БД. Именно по этой причине, в статье совсем не рассматривался вопрос создания БД "вручную". Однако автор не считает веб-интерфейсы лучшим способом работы с БД и поэтому в следующей статье будут рассмотрены приемы работы с БД MySQL "в ручную". |
|
2000-2008 г. Все авторские права соблюдены. |
|