Почетный модератор
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MySQL Работа с БД MySQL17.08.2012, 23:24. Показов 162952. Ответов 2
Метки access, database, errors, insert, mysql, mysqli, php, prepare, select, update, warning, ошибки (Все метки)
Работа с БД MySQL в PHP Вступление Приветствую. В последнее время у новичков, только начинающих изучать mysql и php стали возникать вопросы "Как работать с mysql в php" и вопросы об ошибках, в которых на самом деле четко и ясно описывается где и в чем ошибка. Я лично (да и не только я) не советую использовать расширение mysql для работы с БД MySQL - лучше использовать PDO (лучший вариант на мой взгляд) ну или хотя бы mysqli - mysql уже давно объявлена как устаревшая, и ее не убирают только из-за частого использования новичками. Я попробую немного раскрыть эту тему, чтобы вам было от чего отталкиваться. Итак, начнем. Содержание #
Работа с БД MySQL через расширение mysql Коротко о главном. Расширение mysql уже давно считается устаревшим и не рекомендуется к использованию. На оффициальном сайте http://php.net уже давно грозятся убрать это расширение. Этого до сих пор еще не сделали только по той причине, что многие его до сих пор используют. Я рекомендую использовать для работы с БД MySQL расширение mysqli, или, что еще лучше на мой взгляд - PDO. Но до сих пор у многих возникают вопросы по поводу работы с базами данных через расширение mysql. Поэтому я решил несколько раскрыть основы работы в php и с расширением mysql, и с расширением mysqli 1. Соединение, выбор базы для работы и установка кодировки ▲ Подключение к серверу MySQL ▲ Для начала работы с mysql необходимо подключиться к этому самому серверу БД MySQL. Делается это следующей командой:
Выбор базы данных для работы ▲ Далее необходимо выбрать собственно саму базу, с которой мы будем работать, это делается функцией
Установка кодировки для работы ▲ Далее, для правильной кодировки при работе с данными - чтобы не выводились "кракозябры" вместо русских букв нужно установить кодировку для соединения и работы: В старых версиях mysql (если память не изменяет, до MySQL 5.0) вместо этого писалось
В новых версиях MySQL используется другая функция (которая включает несколько старых одновременно):
Внимание, важный момент! Все скрипты, таблицы, и сама база должны быть в одной кодировке!!! Иначе вы получите головную боль при использовании русских символов! Выполнение запросов ▲ Идем дальше. Мы соединились с сервером, выбрали базу данных для работы, установили нужную нам кодировку. Теперь нам необходимо произвести необходимые нам в данном случае операции с данными, которые у нас хранятся в нашей базе данных. Запросы выполяются с помощью функции mysql_query():
Основные и самые часто используемые запросы - это SELECT (выбор), INSERT (вставка) и UPDATE (обновление). Теперь несколько подробнее разберем каждый. 2.1 SELECT ▲ допустим, у нас есть таблица фрукты (fruit). Выберем все записи из этой таблицы. SQL-запрос будет выглядеть так:
Если нам не нужно выбирать все поля из таблицы - то можно перечислять необходимые поля через запятую (вернее, не можно, а даже нужно). И тогда запрос будет выглядеть уже следующим образом:
То есть, я советую при запросе всегда указывать mysql-ные названия таблиц и полей в обратных косых апострофах (клавиша тильда, под ESC - буква ё на англ. раскладке). Пример необходимости указания этих апострофов: у нас есть поле e-mail в таблице и мы хотим извлечь e-mail. Составляем запрос:
Можно указывать несколько критериев с помощью AND (и), OR (или).
Использование лимита при выборке данных ▲ Также существует возможность использовать лимит (предел). Ключевое слово - LIMIT. После него ставятся либо одна цифра, либо две через запятую. Разберем каждый вариант. 1. Одна цифра:
2. Две цифры:
2.2 INSERT ▲ Идем далее. INSERT (вставка данных). Существует два варианта записи, мы разберем только один:
Переводим: "ВСТАВИТЬ В имя_таблицы с полями поле1, поле2 и поле3 соответствующие значение1, значение2 и значение3" Представим что мы хотим вставить новый тип фрукта в нашу таблицу с фруктами (киви, к примеру). Запрос будет выглядеть так:
2.3 UPDATE ▲ UPDATE (обновление данных).
Но! Мы не указали критерий какую именно запись(строку) обновлять!!! И в результате у нас обновятся ВСЕ записи в таблице. Нужно указать критерий, используя уже знакомое ключевое слово WHERE. Думаю, с этим проблем не должно возникнуть, не будем останавливаться на этом и перейдем собственно, к самому php. 3. PHP и MySQL ▲ Итак, как же все таки работать в PHP с БД MySQL? Давайте разберем с вами это на примерах Выполнение запросов в php ▲ как я уже говорил, запросы выполняются с помощью функции mysql_query(). То есть выглядит это так:
Вы спросите, зачем я писал $link после запроса. Это указатель на нужное соединение. Он не обязательный, если его не указать, то функция будет пытаться использовать последнее открытое соединение. 3.1 Возвращаемые значения ▲ Теперь о возвращаемых значениях. Для запросов SELECT, SHOW, EXPLAIN и DESCRIBE функция возвращает указатель на результат запроса при успехе, при неудаче - возвращает FALSE. Для всех остальных запросов (INSERT,UPDATE, и т.д.) функция возвращает TRUE в случае успеха и FALSE в случае ошибки. 3.2 Обработка полученного ресурса ▲ Для вывода полученных данных при запросе SELECT, SHOW, EXPLAIN или DESCRIBE необходимо обработать этот самый указатель для этого используют fetch-функции. Две самые распространенные из них - это mysql_fetch_assoc() и mysql_fetch_array(). Первая возвращает ассоциативный массив, вторая несколько массивов сразу (если не нужны числовые индексы и т.п., то рекомендую использовать первую). Типы возвращаемых массивов mysql_fetch_array() ▲ mysql_fetch_array() по умолчанию возвращает несколько массивов сразу, как числовой, так и ассоциативный. Можно указать какой именно нужен всего есть три типа:
Если у нас результат запроса указывает только на одну запись, то достаточно просто
Внимание!!! Не используйте цикл do - while для вывода, если этого жестко не требуют условия!!
4. Ошибки ▲ На самом деле у среднего программиста больше времени уходит на борьбу с ошибками, чем на написание самой программы. Это вполне нормально, если ты знаешь, как их исправить.. Если не знаешь, то тебе приходится долго и упорно мучать себя, гугл и, возможно, еще кого-то. Я постараюсь немного рассказать о самых частых из них, чтобы у вас было меньше проблем при отладке Частые ошибки ▲ Теперь немного поговорим по поводу ошибок. Вспомним, что возвращает в случае неудачи mysql_query() и подойдем к, наверное, самой распространенной ошибке. Выглядит она так: Решил добавить еще несколько слов по поводу ошибок при запросах к БД Самое главное: НИКОГДА при отладке программы не используйте так называемые "собаки" - @ Вы от этого не выиграете, а только потеряете. Даже наоборот, при отладке программы, я настойчиво рекомендую в начале скрипта прописывать эти две строчки
Ну а теперь еще немного по отладке запросов к БД (при отладке программы, ни при запущенной) Очень часто в запросы к БД приходится добавлять переменные. К примеру даже простая авторизация: У нас есть форма с полями ввода логина и пароля и кнопкой - по нажатию мы соответственно пытаемся найти этого пользователя у нас в базе. Естественно, переменные мы должны очищать и проверять перед запросом. НИКОГДА не доверяйте любым данным, которые получены от пользователя и всегда их проверяйте и очищайте! Поверьте, от этого еще никогда хуже не было. Представим, что мы очистили и логин и пароль, но при авторизации у нас не находит этого пользователя. Очень часто спрашивают, где ошибка, поэтому я решил немного объяснить, что в такой ситуации нужно делать. Отладка ▲ 1. Нужно проверить все переменные, пустые они или нет (и вообще, инициализированы ли они) - функция
2. Если вам лень это делать (как часто мне бывает) - можно перед запросом непосредственно к БД вывести сам этот запрос на экран, и посмотреть что у нас уходит в базу, какой запрос.
3. Если все нормально, и все переменные хорошо видно - можно зайти в PHPMyAdmin и вручную (на вкладке Выполнить SQL-запрос) попробовать выполнить этот запрос с подставленными нужными значениями. 4. Если запрос успешно выполняется - то либо дописать к запросу перед точкой с запятой как я уже писал
Работа с БД MySQL через расширение mysqli ▲ Собственно, в продолжение темы. В самом начале я написал о том, что не рекомендуется использовать расширение mysql для работы с MySQL. Поэтому я решил написать немного о других расширениях для работы с MySQL. В php есть возможность работать (помимо mysql) еще через mysqli и PDO. поэтому здесь я вкратце расскажу о mysqli (mysqlimproved). Mysqli по синтаксису схожа с mysql - это, в общем-то, улучшенное расширение mysql, как видно из перевода. Итак, продолжим. 1. Процедурный подход ▲ Mysqli, в отличии от mysql, поддерживает как процедурный, так и ООП подход. Начнем с процедурного. 1.1. Соединение с сервером ▲
1.2. Выполнение запросов ▲ Как я уже говорил, синтаксис очень схожий
2. ООП подход ▲ 1.1. Соединение с сервером ▲
Ну, а теперь о главном. Вы наверное спросите, а в чем же плюс у mysqli или PDO перед mysql? Во-первых, они быстрее работают, чем mysql. Доказательства приводить я не буду, можете сами замерить.. Во-вторых, поддержка нескольких одновременных запросов И, в-третьих, наверное, самое главное - возможность подготавливания выражений к запросу без кучи всевозможных очисток, которые при использовании mysql просто необходимы. 3.1 Подготовленные выражения для запроса ▲ В mysqli и PDO есть несколько способов экранировать кавычки перед запросом, разберем один из них Разберем пример с авторизацией опять же:
P.S. тоже самое возможно и на процедурном подходе, просто мне лично удобнее такой синтаксис Подведение итогов ▲ На этом пока что все, мы разобрали основы синтаксиса, посмотрели почему лучше использовать другие расширения для работы с базами данных сервера MySQL. На всякий случай еще раз повторяю - даже на официальном сайте написано о том, что данное расширение (mysql) считается устаревшей и в любой момент может быть отключена, т.е. помечена как deprecated и вы не сможете ее использовать: Основы синтаксиса, основы взаимодействия MySQL с php через расширения mysql и mysqli, и самые часто встречающиеся ошибки мы разобрали.. Желаю успехов в программировании
90
|
17.08.2012, 23:24 | |
Ответы с готовыми решениями:
2
Работа с БД MySQL (MySQL + BCB 6) Работа с mysql Работа с БД MYSQL Работа с MySQL |
Почетный модератор
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
26.02.2017, 00:20 [ТС] | 3 |
Темы со старым мускулом еще встречаются. А главное, что из-за ограничения на количество символов просто отредактировать не получится, надо будет разбивать по постам, а мне лень..
0
|
26.02.2017, 00:20 | |
26.02.2017, 00:20 | |
Помогаю со студенческими работами здесь
3
C++ работа с mysql Работа с mysql Работа с mySQL Работа с MySQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |