Соединение с бд php. Связь с базами данных MySQL. Создание базы данных. Функция CREATE DATABASE

  • 03.11.2019

При помощи php...

Создание соединения с БД на PHP разными способами :

1) старый дедовский способ подключения к MySQL:

$conn=mysql_connect($db_hostname, $db_username, $db_password) or die ("Нет подключения к серверу");
mysql_select_db($db_database,$conn) or die ("Нет удалось соединиться с БД");

Пояснения к переменным ниже.

При этом используются функции:

  • mysql_connect() - для подключения к серверу;
  • mysql_select_db() - для подключения к БД;

При этом постоянно проверяем на наличие ошибки таким способом: or die ("Ошибка такая то"); - переводится как или умри с такой-то ошибкой - чтобы сразу найти где ошибка.

config.php

// переменные для соединения с БД
$host = "localhost"; / хост
$username = "root"; // пароль для подключения к БД
$password = ""; // пароль для подлючения к базе данных - на локальном компьютере он может иметь пустое значение.
$database_name = "my-dolgi"; // имя БД

// старый способ соедения с БД
mysql_connect($host, $username, $password) or die("Не могу соединиться создать соединение");

// выбрать БД. Если ошибка - вывести
mysql_select_db($database_name) or die(mysql_error());

index.php

require_once "config.php";


$result = mysql_query("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5") or die(mysql_error());



";


while ($row = mysql_fetch_assoc($result)) {
";
}


mysql_free_result($result);

// Закрываем соединение
mysql_close();

2) Более прогрессивный процедурный стиль - соединение с БД при помощи mysqli:

Данный способ:

  • удобнее;
  • быстрее до 40 раз;
  • повышена безопасность;
  • есть новые возможности и функции;
  • Пример соединения с БД на php с выборкой из таблицы

    config.php

    // соедения с БД
    $link = mysqli_connect("localhost", "username", "password", "name-database"); // тут вводим прям данные ваши: имя юзера, пароль и имя БД, первое поле обычно localhost

    // вывод ошибки соединения
    if (!$link) {
    echo "Ошибка подключения к БД. Код ошибки: " . mysqli_connect_error();
    exit;
    }

    Обратите внимание - везде используется mysqli , а не mysql !!!

    index.php

    require_once "config.php";

    // Выполнить запрос. Если ошибка - выводим
    if ($result = mysqli_query ($link, "SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5")) {

    Echo "Кому я должен по убыванию:

    ";

    // Выборка результатов запроса
    while ($row = mysqli_fetch_assoc ($result)) {
    echo $row["Name"] . " с долгом " . $row["Money"] . " рублей.
    ";
    }

    // освобождение используемой памяти
    mysqli_free_result ($result);

    // Закрываем соединение
    mysqli_close ($link );
    }

    Как видим, некоторые моменты поменялись (выделены курсивом).

    3) Объектно-ориентированный метод подключения к бд MySQL - с помощью методов и классов:

    Минусы: сложнее и менее восприимчив к ошибкам.

    Плюсы: краткость и удобство для программистов с опытом.

    $conn = new mysqli($db_hostname, $db_username, $db_password, $db_database);
    if($conn->connect_errno){
    die($conn->connect_error);
    } else {echo "Соединение с БД успешно установлено";}

    тут в принципе все интуитивно понятно:

    • $db_hostname - это хост (в основном localhost),
    • $db_database - имя БД ;
    • $db_username и $db_password - имя пользователя и пароль соответственно!
    Пример соединения с БД на php стиль ООП с выборкой из таблицы

    config.php

    // соедения с БД
    $mysqli = new mysqli ("localhost", "username", "password", "name-database"); // тут вводим прям данные ваши: имя юзера, пароль и имя БД, первое поле обычно localhost

    // вывод ошибки соединения
    if ($mysqli->connect_error) {
    die ("Ошибка подключения к БД: (" . $mysqli->connect_errno . ") " . mysqli_connect_error) ;
    }

    Обратите внимание - везде используется mysqli , а не mysql !!! и в отличие от предыдущего метода появляются стрелочки "->", которые показывают, что это стиль ООП.

    index.php

    require_once "config.php";

    // Выполнить запрос. Если ошибка - выводим
    if ($result = $mysqli->query ("SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5")) {

    Echo "Кому я должен по убыванию:

    ";

    // Выборка результатов запроса
    while ($row = $result->fetch_assoc ()) {
    echo $row["Name"] . " с долгом " . $row["Money"] . " рублей.
    ";
    }

    // освобождение используемой памяти
    $result->close() ;

    // Закрываем соединение
    $mysqli->close ();
    }

    Задание вам такое - найти отличия.

    4) Связь с БД при помощи PDO:

    При соединении с базой данных MySQL используются подготовленные выражения(методом prepare) и в результате большая безопасность и сильно увеличивает быстродействие.

    config файл от предыдущего метода! - такой же

    index.php

    // PDO стиль для связи с MySQL
    if ($stmt = $mysqli->prepare("SELECT Name, Voney FROM Dolg ORDER BY Money < ? LIMIT 5")) {

    $stmt->bind_param("i", $summa);
    $summa = 100000;

    //запускаем выполнение
    $stmt->execute();

    // Объявление переменных для заготовленных значений
    $stmt->bind_result($col1, $col2);

    Echo "Кому я должен по убыванию:

    ";

    // Выборка результатов запроса
    while ($stmt->fetch()) {
    echo $col1 . " с долгом " . $col2 . " рублей.
    ";
    }

    // освобождение используемой памяти
    $stmt->close();

    // Закрываем соединение
    $mysqli->close();

    Как видим, тут намного сложнее и надо изучать PDO - это отдельная тема.

    В этой статье мы на примерах разберем такие очень важные моменты в работе с базами данных MySQL (БД), как выборка из базы данных, запись в базу данных, обновление информации в базе данных, а также ее удаление из базы данных. Все это будет производиться при помощи четырех – операторов SELECT, INSERT, UPDATE и DELETE о которых и пойдет речь в данной статье.

    Итак, если нужно вытащить все поля из базы данных используем следующий код.

    $result = mysql_query("SELECT * FROM first_table",$db);

    Звездочка означает, что нужно вытащить все поля из таблицы.

    Если нужно вытащить только некоторые поля, например, имя и фамилию.

    $result = mysql_query("SELECT name, last_name FROM first_table",$db);

    name, last_name – поля с именами и фамилиями пользователей.

    Если нужно получить точные данные, например, фамилию всех пользователей в базе данных с определенным именем (имя будет занесено в переменную $name).

    name=’$name’ – поле name равняется переменной $name.

    Кроме одного условия мы также можем перечислить несколько, например, нужно получить идентификатор всех пользователей с определенным именем и фамилией (имя и фамилия будут занесены в переменные $name и $last_name соответственно). Для этого можем использовать следующий код.

    Если же нам нужно получить записи, где выполняется одно условие из нескольких, например, получить идентификаторы всех пользователей у которых имя или фамилия отвечают заданным в условиях.

    Если вам нужно отсортировать результат по каким-то параметрам, например, по имени.

    $result = mysql_query("SELECT * FROM first_table ORDER BY name ",$db);

    ORDER BY name – отсортировать по имени.

    Если нужно отсортировать в обратном порядке.

    $result = mysql_query("SELECT * FROM first_table ORDER BY name DESC ",$db);

    DESC – в обратном порядке.

    Если нужно вытащить только определенное количество полей из базы данных. К примеру, нужно вытащить первые пять полей.

    $result = mysql_query("SELECT * FROM first_table ORDER BY id LIMIT 5 ",$db);

    LIMIT 5 – вытащить из БД только первые пять результатов.

    Это были небольшие примеры выборки из базы данных. Теперь давайте рассмотрим, как преобразовать полученный результат в массив для дальнейшего использования, например, для вывода результата на экран. Для этого в PHP существует специальная mysql_fetch_array() .

    Результат выполнения функции мы можем поместить в переменную, например, переменную $myrow, которая будет хранить в себе . В качестве параметра функции mysql_fetch_array() будет передан результат выполнения функции mysql_query() . Все это будет выглядеть следующим образом.

    $myrow = mysql_fetch_array($result);

    Теперь мы можем обращаться к элементам ассоциативного массива $myrow. В качестве примера давайте рассмотрим код, который выводит на экран имя пользователя с идентификатором id =1. В качестве базы данных будет использоваться база db_first из предыдущей статьи.

    /*Подключаемся к БД*/ $db = mysql_connect("Сервер MySQL","Пользователь БД","Пароль для доступа к БД"); mysql_select_db("db_name", $db); /*Делаем запрос к БД*/ $result = mysql_query("SELECT name FROM first_table WHERE id="$id"",$db); /*Преобразовываем результат в массив*/ $myrow = mysql_fetch_array($result); /*Выводим результат на экран*/ echo $myrow["name"];

    Как видите все очень просто и понятно.

    Ну а теперь перейдем к следующему оператору INSERT, который отвечает за добавление информации в базу данных.

    Добавление информации в базу данных. Оператор INSERT

    Оператор INSERT применяется для добавления информации в базу данных. Код, отвечающий за добавление, имеет следующий синтаксис.

    $result = mysql_query ("INSERT INTO таблица (поле 1, поле 2, поле N) VALUES ("значение 1", "значение 2", "значение N")");

    Например, нам нужно добавить в таблицу first_table имя и фамилию нового пользователя. Для этого можно использовать следующий код.

    $result = mysql_query ("INSERT INTO first_table (name, last_name) VALUES ("$name", "$last_name")");

    Где, $name и $last_name – переменные с именем и фамилией нового пользователя.

    Для того чтобы проверить результат можно использовать .

    $result = mysql_query ("INSERT INTO first_table (name, last_name) VALUES ("$name", "$last_name")"); if ($result == "true") { echo "Запись добавлена успешно!"; } else { echo "Запись не добавлена!"; }

    Другими словами, если в переменную $result попадет истина, то выведется сообщение, что запись добавлена. В противном случае выведется, что запись в базу данных не добавлена.

    Обновление информации в базе данных. Оператор UPDATE

    Оператор UPDATE применяется для обновления уже существующей информации в базе данных. Синтаксис функции mysql_query в данном случае следующий.

    Теперь перейдем к примеру. Допустим нам нужно изменить имя и фамилию для пользователя с идентификатором $id в таблице db_name. Для этого можно использовать следующий код.

    Теперь давайте перейдем к заключительной части статьи и рассмотрим последний оператор DELETE, который отвечает за удаление информации из базы данных.

    Удаление информации из базы данных. Оператор DELETE

    Оператор DELETE применяется для удаления полей из базы данных. Синтаксис функции mysql_query() в данном случае следующий.

    Теперь как обычно перейдем к примеру. Допустим нам нужно удалить пользователя с идентификатором $id из таблицы db_name. Для этого можно использовать следующий код.

    На этом данная статья подошла к концу. Материал не сложный, но объяснять его посредством текста достаточно сложно. Все же я думаю, вы поняли всю суть вышеизложенного материала. Если у вас остались какие-то вопросы по данной статье, вы всегда можете задать их в комментариях.

    На этом все. Удачи вам и успехов в изучении PHP и MySQL.

    СУБД MySQL - одна из множества баз данных, поддерживаемых в PHP. Система MySQL распространяется бесплатно и обладает достаточной мощностью для решения реальных задач.

    Краткое введение в MySQL

    SQL - это аббревиатура от слов Structured Query Language , что означает структурированный язык запросов. Этот язык является стандартным средством для доступа к различным базам данных.

    Система MySQL представляет собой сервер, к которому могут подключаться пользователи удаленных компьютеров.

    Для работы с базами данных удобно пользоваться средством, входящее в комплект Web-разработчика: Denwer phpMyAdmin . Здесь можно создать новую базу данных, создать новую таблицу в выбранной базе данных, заполнить таблицу данными, а также добавлять, удалять и редактировать данные.

    В MySQL определены три базовых типа данных: числовой, дата и время и строчный. Каждая из этих категорий подразделяется на множество типов. Основные из них:


    Каждый столбец после своего типа данных содержит и другие спецификаторы:

    Тип Описание
    NOT NULL Все строки таблицы должны иметь значение в этом атрибуте. Если не указано, поле может быть пустым (NULL)
    AUTO_INCREMENT Специальная возможность MySQL, которую можно задействовать в числовых столбцах. Если при вставке строк в таблицу оставлять такое поле пустым, MySQL автоматически генерирует уникальное значение идентификатора. Это значение будет на единицу больше максимального значения, уже существующего в столбце. В каждой таблице может быть не больше одного такого поля. Столбцы с AUTO_INCREMENT должны быть проиндексированными
    PRIMARY KEY Столбец является первичным ключом для таблицы. Данные в этом столбце должны быть уникальными. MySQL автоматически индексирует этот столбец
    UNSIGNED После целочисленного типа означает, что его значение может быть либо положительным, либо нулевым
    COMMENT Название столбца таблицы

    Создание новой базы данных MySQL CREATE DATABASE .

    CREATE DATABASE IF NOT EXISTS `base` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin

    Создание новой таблицы осуществляется при помощи SQL-команды CREATE TABLE . Например, таблица books для книжного магазина будет содержать пять полей: ISBN, автор, название, цена и количество экземпляров:

    CREATE TABLE books (ISBN CHAR(13) NOT NULL, PRIMARY KEY (ISBN), author VARCHAR(30), title VARCHAR(60), price FLOAT(4,2), quantity TINYINT UNSIGNED); Чтобы избежать сообщения об ошибке, если таблица уже есть необходимо изменить первую строчку, добавив фразу "IF NOT EXISTS": CREATE TABLE IF NOT EXISTS books ...

    Для создания автообновляемого поля с текущей датой типа TIMESTAMP или DATETIME используйте следующую конструкцию:

    CREATE TABLE t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

    Добавление данных в эту таблицу осуществляется при помощи SQL-команды INSERT . Например:

    INSERT INTO books (ISBN, author, title, price, quantity) VALUES ("5-8459-0184-7", "Зандстра Мэт", "Освой самостоятельно PHP4 за 24 часа", "129", "5");

    Для извлечения данных из таблицы служит оператор SELECT . Он извлекает данные из базы, выбирая строки, которые отвечают заданному критерию поиска. Оператор SELECT сопровождает немалое количество опций и вариантов использования.

    Символ * означает, что необходимы все поля. Например:

    SELECT * FROM books;

    Для получения доступа только к некоторому полю следует указать его имя в инструкции SELECT . Например:

    SELECT author, title, price FROM books;

    Чтобы получить доступ к подмножеству строк в таблице, следует указать критерий выбора, который устанавливает конструкция WHERE . Например, чтобы выбрать имеющиеся в наличии недорогие книги о PHP, надо составить запрос:

    SELECT * FROM books WHERE price % Соответствует любому количеству символов, даже нулевых
    _ Соответствует ровно одному символу

    Для того, чтобы строки, извлеченные по запросу, перечислялись в определенном порядке, используется конструкция ORDER BY . Например:

    SELECT * FROM books ORDER BY price;

    По умолчанию порядок сортировки идет по возрастанию. Изменить порядок сортировки на обратный можно с помощью ключевого слова DESC :

    SELECT * FROM books ORDER BY price DESC;

    Сортировать можно и по нескольким столбцам. Вместо названий столбцов можно использовать их порядковые номера:

    SELECT * FROM books ORDER BY 4, 2, 3;

    Для изменения ранее записанных в таблицу значений нужно воспользоваться командой UPDATE . Например, цену всех книг повысили на 10%:

    UPDATE books SET price = price * 1.1;

    Конструкция WHERE ограничит работу UPDATE определенным строками. Например:

    UPDATE books SET price = price * 1.05 WHERE price

    Для удаления строк из базы данных используется оператор DELETE . Ненужные строки указываются при помощи конструкции WHERE . Например, какие-то книги проданы:

    DELETE FROM books WHERE quantity = 0;

    Если нужно удалить все записи

    TRUNCATE TABLE table_name

    Для полного удаления таблицы используется:

    DROP TABLE table_name

    Связь PHP с базой данных MySQL

    Поработав с phpMyAdmin над созданием базы данных, можно приступить к подключению этой базы данных к внешнему Web-интерфейсу.

    Чтобы получить доступ к базе данных из Web, используя PHP, надо сделать следующие основные шаги:

    • Подключение к серверу MySQL.
    • Выбор базы данных.
    • Выполнение запроса к базе данных:
      • добавление ;
      • удаление ;
      • изменение ;
      • поиск ;
      • сортировка .
    • Получение результата запроса.
    • Отсоединение от базы данных.

    Для подключения к серверу базы данных в PHP есть функция mysql_connect() . Ее аргументы: имя компьютера, имя пользователя и пароль. Эти аргументы можно опустить. По умолчанию имя компьютера = localhost , тогда имя пользователя и пароль не требуется. Если PHP используется в сочетании с сервером Apache, то можно воспользоваться функцией mysql_pconnect() . В этом случае соединение с сервером не исчезает после завершения работы программы или вызова функции mysql_close() . Функции mysql_connect() и mysql_pconnect() возвращают идентификатор подключения, если все прошло успешно. Например:

    $link = mysql_pconnect (); if (!$link) die ("Невозможно подключение к MySQL");

    После того, как соединение с сервером MySQL установлено, нужно выбрать базу данных. Для этого используется функция mysql_select_db() . Ее аргумент: имя базы данных. Функция возвращает true , если указанная база данных существует и доступ к ней возможен. Например:

    $db = "sample"; mysql_select_db ($db) or die ("Невозможно открыть $db");

    Для добавления, удаления, изменения и выбора данных нужно сконструировать и выполнить запрос SQL. Для этого в языке PHP существует функция mysql_query() . Ее аргумент: строка с запросом. Функция возвращает идентификатор запроса.

    Пример 1 Добавление записи в таблицу

    При каждом выполнении примера 1 в таблицу будет добавляться новая запись, содержащая одни и те же данные. Разумеется имеет смысл добавлять в базу данные, введенные пользователем.

    В примере 2.1 приведена HTML-форма для добавления новых книг в базу данных.

    Пример 2.1 HTML-форма добавления новых книг
    ISBN
    Автор
    Название
    Цена
    Количество

    Результаты заполнения этой формы передаются в insert_book.php.

    Пример 2.2 Программа добавления новых книг (файл insert_book.php)

    В примере 2.2 введенные строковые данные обработаны функцией addslashes() . Эта функция добавляет обратные слеши перед одинарными кавычками ("), двойными кавычками ("), обратным слешем (\) и null-байтом. Дело в том, что по требованиям систаксиса запросов баз данных такие символы дожны заключаться в кавычки.

    Для определения количества записей в результате запроса используется функция mysql_num_rows() .

    Все записи результата запроса можно просмотреть в цикле. Перед этим с помощью функции mysql_fetch_ для каждой записи получают ассоциативный массив.

    В примере 3.1 приведена HTML-форма для поиска определенных книг в базе данных.

    Пример 3.1 HTML-форма поиска книг Ищем по:
    Автору Названию ISBN
    Что ищем:

    Результаты заполнения этой формы передаются в search_book.php.

    Пример 3.2 Альтернативный вариант Программа поиска книг (файл search_book.php)

    Итак, как работает архитектура Web-баз данных:

  • Web-браузер пользователя выдает HTTP-запрос определенной Web-страницы. Например, пользователь, используя HTML-форму, ищет все книги о PHP. Страница обработки формы называется search_book.php.
  • Web-сервер принимает запрос на search_book.php, извлекает этот файл и передает на обработку механизму PHP.
  • PHP выполняет соединение с MySQL-сервером и отправляет запрос.
  • Сервер принимает запрос к базе данных, обрабатывает его и отправляет результат (список книг) обратно механизму PHP.
  • Механизм PHP завершает выполнение сценария, форматирует результат запроса в HTML. После этого результат в виде HTML возвращается Web-серверу.
  • Web-сервер пересылает HTML в браузер, и пользователь имеет возможность просмотреть запрошенный список книг.
  • Использование механизма транзакций

    Использование механизма транзакция на примере как передать деньги от одного человека другому

    If(mysql_query ("BEGIN") && mysql_query ("UPDATE money SET amt = amt - 6 WHERE name = "Eve"") && mysql_query ("UPDATE money SET amt = amt + 6 WHERE name = "Ida"") && mysql_query ("COMMIT")){ echo "Успешно"; }else{ mysql_query ("ROLLBACK"); echo "Не успешно"; }

    SELECT … FOR UPDATE

    Если Вы запускаете несколько процессов, которые делают select запрос к одной и той же таблице, то они могут выбрать одну и ту же запись одновременно.

    Чтобы избежать вышеупомянутой ситуации необходимо выполнить не просто SELECT запрос, а его расширенную версию, о которой многие и не подозревают: SELECT … FOR UPDATE.

    Таким образом, при выполнении данного запроса, все затронутые записи в базе данных будут заблокированы до завершения сеанса работы с БД или до момента обновления данных записей. Другой скрипт не сможет выбрать заблокированные записи до тех пор, пока не наступит одно из упомянутых условий.

    Однако не всё так просто. Вам нужно выполнить ещё несколько условий. Во-первых, ваша таблица должна быть создана на основе архитектуры InnoDB. В противном случае блокировка просто не будет срабатывать. Во-вторых, перед выполнением выборки необходимо отключить авто-коммит запроса. Т.е. другими словами автоматическое выполнение запроса. После того как вы укажите UPDATE запрос, необходимо будет ещё раз обратиться к базе и закоммитить изменения с помощью команды COMMIT:

    Сделал на PHP для себя простенькую базу событий с напоминалкой о них на e-mail. Вполне сойдет как пример для работы в PHP с базой данных.

    В качестве базы данных конечно MySQL.

    Таблички можно создать вручную через phpMyAdmin, как описано в примере создания опроса на PHP здесь , но здесь таблички я буду создавать с помощью запросов.

    Файл для создания таблиц create.php (его запускаем 1 раз, потом удаляем после создания таблиц).

    Форма регистрации пользователя add.php

    E-mail:

    Пароль:

    Заносим в базу логин и пароль add1.php

    Войти

    Зарегистрировались.

    Теперь форма ввода логина и пароля login.php

    Напоминалка по событиям на PHP

    E-mail:

    Пароль:

    Регистрация

    Напомнить пароль

    После правильного ввода логина и пароля отображаем список событий see.php

    Напоминалка по событиям на PHP

    Под табличкой событий форма для ввода нового события и кнопка Добавить, при нажатии на нее открывается seeadd.php, событие добавляется и снова отображается табличка с новым событием и форма ввода. Чтобы все корректно заносилось, надо обратить внимание на формат даты и кодировку.

    Напоминалка по событиям на PHP

    В табличке у нас кнопка Изменить открывает change.php с формой изменения введенной ранее записи.

    Напоминалка по событиям на PHP