Radiance |
Дата: Четверг, 27.03.2014, 10:26 | Сообщение # 1
|
Боец
Сообщений: 209
Статус: Offline
|
Вот решил, пока не занят, по маленьку накидывать теории и, собсна, практики некоторых каверзных моментов. На стадии изучения и первых проб PHP лично мне изнасиловала мозг конкретно задача корректной работы с БД. Да и сейчас не редко попадаюсь на этом, и так - начнём. Перво-наперво научимся подключаться к серверу бд, делается это очень просто: Код $db_use = mysql_connect('имя_хоста','логин_юзера','пароль'); Окей, к серверу коннект имеется, но, нам же нужно работать с базой. База выбирается следующим образом: Код mysql_select_db('имя_базы'); Хорошо, подключение есть, база выбрана, мы готовы работать. Запросы к БД имеют аналогичный вид, отличаются только команды, отправляемые нами Код mysql_query("Текст запроса"); Как видите, всё довольно таки просто. Но это еще не всё, ведь мы не умеем с ней работать, но и это не проблема, читае далее: Итак, начнём разьираться с синтаксисом SQL, а точнее рассмотрим самые используемые команды и научимся с ними обращаться. Эти команды INSERT, SELECT и UPDATE, теперь по порядку.. Итак, представим такое дело, есть у нас таблица, имя таблицы, скажем, tablica и нам нужно выбрать некие данные из этой таблицы. Так вот, для этого используется команда SELECT, пример: Код SELECT * FROM 'tablica' Знак звёздочки означает, что мы требуем вытянуть из бд все поля, соответственно, немного подумав, мы обнаруживаем, что в переводе на великий русский это дело звучит, как "Выбери все поля из tablica", прекрасно, понятно. Если же нам нужно тащить инфу лишь из одного или двух-трёх-пятидесяти полей, то всего лишь стоит перечислить именя полей через заптую, пример: Код SELECT 'pole1', 'pole2', 'pole3' FROM 'tablica' Но ведь это еще не всё,нет! А если нам нужно вытащить что-то по каким то критериям? Да не вопрос. тут нам поможет команда WHERE, допустим, нам нужно извлечь все значения znach, то запрос: Код SELECT * FROM `tablica` WHERE `category`='znach' Можно извлечь несколько видов значений, поиграться с вариантами извлечения, тут нам помогут команды AND (и), OR(или), т.е. к примеру, "извлеки из ящика отвёртку или молоток", либо "извлеки из ящика отвёртку и молоток": Код SELECT * FROM `tablica` WHERE `category`='znach' OR `category`='znach2' Тем же макаром AND Код SELECT * FROM `tablica` WHERE `category`='znach' AND `category`='znach2'
Так же мы можем выбрать лишь определенное количество записей, к примеру либо столько, либо с такой-то по такую, либо до такой и тд, тут нам поможет функция предела LIMIT. Для выборки после LIMIT через пробел ставится цифра, означающее количество записей, к примеру: Код SELECT * FROM 'tablica' LIMIT 10 Данный вариант извлекет нам 10 последних записей из таблицы, Либо же после LIMIT ставятся две цифры через запятую, что означает, что нам нужно извлечь записи с такой то по такую то включительно, пример: Код SELECT * FROM 'tablica' LIMIT 3, 5 В данном случае нам явятся записи с 3 по 5 включительно.
Далее разберём команду INSERT. Эта чудесная штука позволяет нам вносить данные в БД, при том очень просто, русским языком запрос представляет собой что-то вроде "Вставь в 'имя_таблицы' в поля ('полерас', 'поледвас') значения ('значениерас', 'значениедвас') То есть получаем следующий запрос: Код
INSERT INTO `tablica` (`category`) VALUES('znach')
то есть мы внесли в таблицу tablica в поле category значение znach.
Теперь же команда UPDATE. Сие чудо позволяет обновлять записи в БД, используется повсеместно, к примеру, когда вы меняете где то пароль, используется эта команда, меняете статус в ВК, она снова тут и тд и тп. Рассказывать тут особо нечего, просто приведу наглядный пример: Код
UPDATE `имя_тяблицы` SET `полерас`='значениерас',`поледвас`='значениедвас',`полетрис`='значениетрис'
Думаю, всё должно быть понятно.
Но нам ведь нужно ещё проверить всё на работоспособность, верно? А решается всё просто: Код mysql_query("запрос",$db_use) or die("ERROR: ".mysql_error()); То есть: запрос к базе, если смерть - АШИПКО, номир ашипки!
Всё очень и очень просто. Вроде пока хватит, а то лень писать что-то еще, кроме итога. Ах, да, итог. Мы научились: Подключаться к серверу БД, выбирать БД, извлекать записи, добавлять записи, обновлять записи, ограничивать количиство извлекаемых записей, проверять ошибки. Для начала неплохо, верно? Особенно, если ты, да да, ты, кто это читает, хоть чуть-чуть дружишь с PHP. Ну и пока всё, в следующий раз мы научимся правильно использовать извлечённые данные, экранировать знаки и ещё много чего интересного.
Радик камбек :D
|
|
|
|
karabawka |
Дата: Воскресенье, 30.03.2014, 11:37 | Сообщение # 2
|
Главный предприниматель
Сообщений: 1121
Статус: Offline
|
Отличный урок! Прям самое важное, все что нужно есть
Цитата Radiance ( ) На стадии изучения и первых проб PHP лично мне изнасиловала мозг конкретно задача корректной работы с БД
Да, я именно когда практиковался, делая первые панельки для сампа сам с нуля, делая, пытался вникнуть, что какая SQL команда выполняет, как подключаться к БД, что какие ошибки (а их было по началу дохрена) означают. И, собственно, со временем понял что язык SQL, вообще его применение в PHP скриптинге очень удобно, и вообще когда изучишь его, и научишься делать какие-либо динамические сайты к примеру, то уже создается ощущение, что знаешь буквально полностью, как работает сайт, что за запросы посылает и т.д, то есть как вообще живет любой сайт.
|
|
|
|
Radiance |
Дата: Воскресенье, 30.03.2014, 16:33 | Сообщение # 3
|
Боец
Сообщений: 209
Статус: Offline
|
В следующий раз еще много чего посмотрим, пока руки не доходят
Радик камбек :D
|
|
|
|
Coder[CM] |
Дата: Суббота, 09.08.2014, 11:48 | Сообщение # 4
|
Новичок
Сообщений: 3
Статус: Offline
|
Молодец. Можешь добавить ещё следующее: Код mysql_query('SET NAMES utf8');
|
|
|
|
Danya_Bass |
Дата: Среда, 13.08.2014, 23:40 | Сообщение # 5
|
Любитель
Сообщений: 39
Статус: Offline
|
Нормальный урок, спасибо
10 дней на CM [✔] 10 репутации на CM [✔] Новичок [✔] 25 дней на CM [✔] 25 репутации на CM [✔] Любитель [✔] 50 дней на CM [✔] 50 репутации на ✔] Боец [✔] 100 дней на CM [✔] 100 репутации на CM [✔] Боец(х2) [✖] 250 дней на CM [✔] 250 репутации на CM [✔] Бывалый [✖] 500 дней на CM [ ✔] 500 репутации на CM [ ✔] Знаток [✖] 600 дней на CM [✖] 600 репутации на CM [ ✔] Советник [✖] 800 дней на CM [✖] 800 репутации на CM [✖] Авторитет [✖] 900 дней на CM [✖] 900 репутации на CM [✖] Легенда [✖] 1000+ дней на CM [✖] 1000+ репутации на CM [✖] Cheat-master [✖]
|
|
|
|
Radiance |
Дата: Четверг, 14.08.2014, 07:42 | Сообщение # 6
|
Боец
Сообщений: 209
Статус: Offline
|
скоро PDO покурим, ибо данный пост устарел еще до момента написания
Радик камбек :D
|
|
|
|
medet21 |
Дата: Понедельник, 10.11.2014, 20:37 | Сообщение # 7
|
76958
Сообщений: 31
Статус: Offline
|
Молодец)
skype: medet21_kz vk: aday_balasy
|
|
|
|
jonifooo |
Дата: Пятница, 10.04.2015, 17:19 | Сообщение # 9
|
SELLER CM
Сообщений: 141
Статус: Offline
|
Всё что мне было нужно, спасибо!
Я ВКОНТАКТЕ
|
|
|
|
vasiliy-jopin |
Дата: Суббота, 18.07.2015, 09:55 | Сообщение # 10
|
Боец
Сообщений: 74
Статус: Offline
|
Тоже не плохой урок, молодец.
|
|
|
|