ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Вкусно и просто про MySQL

Вкусно и просто про MySQL

  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 14 ноября 2009 г. 13:37, спустя 2 часа 27 минут 10 секунд

    Многих начинающих пользователей беспокоит вопрос: Как работать с MySQL из PHP? Я решил помочь с ответом и написал краткий FAQ с примерами.
    Сразу оговорюсь - учить языку запросов MySQL я не буду, да и как работать с phpmyadmin тоже. Только функции и примеры для построения простейших запросов.

    И так начнем. Прежде чем послать запрос и получить что-то нам нужно подключиться к серверу БД(база данных, в нашем случае MySQL) и собственно выбрать БД.
    Подключение можно выполнить с помощью функции mysql_connect. Эта функция принимает следущие параметры: адрес сервера, логин, пароль. Обычно это выглядит так:
    mysql_connect('localhost', 'root', '');

    Тут я указал значение которые обычно используются, тоесть localhost - сервер где выполняется скрипт php, а доступ по умолчанию(дефолту) - root. Но они могут быть и другие.
    Функция возвращает ссылку на произведеное соединение. Я помещую ее в переменную mysql_connect для дальнейшего использования, получим:
    <?php
    $mysql_connect = mysql_connect('localhost', 'root', '')
    or die('Ошибка подключения, проверьте параметры подключения');
    ?>


    Тут видно, если подключение не выполнено то мы увидим результат - сообщение об ошибке. Фунция die заканчивает выполнение нашего кода и выводит сообщение. Кстати это не функция, а конструкция языка :)

    Закрыть соединение можно функцией mysql_close, которая принимает в параметре ссылку на соединение. В нашем случае это выглядит так:
    <?php
    mysql_close($mysql_connect);
    ?>


    Теперьши выберем нашу базу данных с помощью функции mysql_select_db. Эта функция принимает в параметрах название БД и ссылку на соединение:
    mysql_select_db('test', $mysql_connect) or die ('Ошибка выбора базы данных');


    С подключением мы разобрались, теперь посмотрим на функцию mysql_query. Эта функция выполняет запрос. Принимает в параметре сам запрос, например:
    <?php
    $result = mysql_query('SELECT * FROM `users`');
    ?>

    Данный запрос выполняет выборку всех значений с таблицы users. Теперь можно работать с переменной result:
    <?php
    $data = array();
    while($row = mysql_fetch_array($result)) {
    $data[] = $row;
    }
    print_r($data);
    ?>

    Мы распечатали все ники и возраст с таблицы. Чтобы например вывести в результат запрос один результат с возрастом пользователя ivanscm, построим такой запрос:

    <?php
    $query = 'SELECT age FROM `users` WHERE `user`=\'ivanscm\' LIMIT 1'
    ?>

    Тут все говорит само за себя:
    ВЫБРАТЬ age ИЗ users ГДЕ user=ivanscm ЛИМИТ 1
    . Попробуйте сами вывести всех пользователей, например, кто старше 25 лет :)

    Но а вдруг в таблице нет пользователя с ником ivanscm? Как быть? Просто! Проверить результат запроса:
    <?php
    if (mysql_num_rows($result) == 1)
    {
    //данные получены, можно с ними работать
    } else {
    //нет такого
    }
    ?>


    Давайте еще покажу как добавить и изменить значения, что бы возникало меньше вопросов. Это конечно уже MySQL, ну а что поделать :)
    Для добавления записи в БД создадим такой запрос:
    Для примера возьмем что у нас в таблице users три поля: id, nikname, age.
    <?php
    $query = 'INSERT INTO `notebook` VALUES(NULL, \'vasa_pupkin\', \'16\')';
    ?>

    И выполним его:
    <?php
    $result = mysql_query($query);
    echo ($result) ? 'Пользователь добавлен.' : 'Ошибка добавления записи в базу данных';
    ?>


    Тут наш ivanscm позвраслел на год например:
    <?php
    $query = 'UPDATE `users` SET `age`= 20 WHERE `user` = \'ivanscm\'';
    echo ($result) ? 'Возраст изменен' : 'Ошибка изменения записи в базе данных';
    ?>


    Ну вот я и научил вас пользоваться основными фунциями работы с MySQL из PHP. Теперь дам некоторые напутствия, что бы быстрей понять php, да и вообще иметь правильное представление о программировании:

    • Никогда никому не доверяйте. Тем более при работе с БД. Проверяйте все данные которые приходят от пользователя! И очищайте от лишний слешей и тегов. Почитать в доступной форме можно тут: http://www.phpfaq.ru/slashes

    • Читайте книги и манулы. Вникайте. Пробуйте примеры.


    • Начинайте с простого, "изобретайте свои велосипеды", так вы лучше поймете.


    • Не делайте копипасты кусков кода из своих проектов. Подумайте, может стоит что то внести в функцию.


    • Пишите свои гостевые, чаты и тп. Тренеруйтесь! И лучше пользоваться поисковиками, он порой такую статью разжеваную выдаст, лучше чем на любом форуме ответят.



    IvanSCM для любимой Пыхи. Пыха не просто сайт, форум и тп. Это огромное сообщество умных и понятливых людей со всего мира, многие из которых стали друзьми.

    Вкусное продолжение следует…

    UPD: чуток поправил твою статейку.
    1) для однотипных операций в можно использовать тернарный оператор
    2) двойные кавычки используй там где они надо
    С возвращением, Пiха! hyperoff.ru - качественный хостинг php
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 14 ноября 2009 г. 9:57, спустя 20 часов 20 минут 27 секунд

    ivanscm, не пиши транслитом (nik),
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 14 ноября 2009 г. 10:19, спустя 21 минуту 37 секунд

    бегло просмотрел
    в коде нет ни кавычек, ни апострфов, как в массивах, так и в запросах
    это хуево
    все умрут, а я изумруд
  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 14 ноября 2009 г. 10:22, спустя 3 минуты 15 секунд


    бегло просмотрел
    в коде нет ни кавычек, ни апострфов, как в массивах, так и в запросах
    это хуево

    Ну это да. Бегло писал… главное мне было суть донести. Исправить?
    С возвращением, Пiха! hyperoff.ru - качественный хостинг php
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 14 ноября 2009 г. 10:40, спустя 18 минут 16 секунд

    конечно
    все умрут, а я изумруд
  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 14 ноября 2009 г. 11:09, спустя 29 минут 15 секунд

    усе готово шеф :)
    С возвращением, Пiха! hyperoff.ru - качественный хостинг php
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 14 ноября 2009 г. 17:08, спустя 5 часов 58 минут 48 секунд

    а с двойными кавычками - это конечно удобнее, нежели экранировать все в коде (потому как визуально код превращается в кашу).
    Хотя в целом понятно все. Зачет.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 15 ноября 2009 г. 1:46, спустя 8 часов 38 минут 9 секунд


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

    <?php
    $query = 'UPDATE `users` SET `age`= 20 WHERE `user` = \'ivanscm\'';
    echo ($result) ? 'Возраст изменен' : 'Ошибка изменения записи в базе данных';
    ?>
    Сапожник без сапог
  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 24 сентября 2014 г. 12:56, спустя 1774 дня 10 часов 9 минут

    нихуя, это я писал?
    С возвращением, Пiха! hyperoff.ru - качественный хостинг php
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 сентября 2014 г. 15:26, спустя 2 часа 30 минут 33 секунды

    нихуя, это я писал?

    @ivanscm, а нахуя ты щас пишешь?

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!