Підключення до mysql через PHP. Як створити підключення до бази даних у PHP? Як створити підключення до бази даних phpmyadmin

Питання досить популярне серед новачків і не приділити цьому окрему статтю було б неправильно. Як з допомогою PHPстворити підключення до бази даних? Скажу відразу, коштів PHP цілком достатньо для повноцінної роботи з базами та взаємодії з MySQL. Тепер спробуємо підключитись!

Що потрібно для підключення PHP до MySQL?

1. Встановлений СУБД та створена робоча база даних. Наприклад, у MySQL (Що таке СУБД та MySQL?).
2. Обліковий запис користувача для MySQL з відповідними правами (Що таке права та привілеї в MySQL?)
3. Відповідно сервер із встановленим PHP

Якщо не виконати один із цих пунктів, то підключитися не вийде.

Алгоритм взаємодії PHP та MySQL

1. Підключення до БД
2. Надсилання запиту та отримання результату
3. (Бажано) Закриття підключення

Тепер підключаємося до бази даних засобами PHP:

Код PHP

$db = mysql_connect("localhost", "Admin", "pass"); // дані користувача
mysql_select_db ("baseName", $ db); // вибираємо до якої БД підключаємося
?>
Як Ви бачите, для підключення вказуються чотири параметри:

1. Ім'я хоста. У багатьох випадках достатньо вказати місцезнаходження (на цьому ж хостингу).
2. Ім'я користувача, якого ви зареєстрували для використання MySQL.
3. Пароль користувача, якого ви зареєстрували для використання MySQL.
4. Назва Бази даних, до якої хочемо підключитися. Відповідно, у користувача, якого ми вказали, мають бути права для роботи в цій БД.

В результаті, якщо щось зазначено неправильно, то нічого кримінального не станеться, а швидше за все Ви побачите помилку. Але будемо оптимістами, припустимо, Ви ввели все правильно.

Ще один вид підключення:

Код PHP

$host = "localhost"; /*хост*/
$user="admin"; /*Ім'я користувача*/
$password="12345"; /*Пароль користувача*/
$ db = "baseName"; /*Назва бази даних*/

Mysql_connect($host, $user, $password); /*Підключення до сервера*/
mysql_select_db($db); /*Підключення до бази даних на сервері*/
?>
Тут я наочно створюю змінні з прикладом даних по користувачеві та хосту, а потім створюємо підключення.

Як перервати (закрити) підключення до БД у PHP?

Трапляються випадки, коли дані для підключення вказуються некоректно. У цьому випадку скрипт продовжує опрацювати файл PHP і видає певну кількість помилок і попереджень на сторінці. Для цих випадків пропоную використовувати обробник помилок під час підключення до БД. У разі невдалого підключення Вам буде виведено попередження, яке підкаже на якомусь етапі проблема:

Код PHP

$user="admin";
$password="12345";
$ db = "baseName";

// якщо сталася помилка
mysql_connect($host, $user, $password) or die("MySQL сервер недоступний!".mysql_error());
mysql_select_db($db) or die("Немає з'єднання з БД". mysql_error());
?>
Дуже важливо також те, що опрацювання сценарію припиниться, що убереже Вас від багатьох некоректних даних.

Вітаю! Тепер Ви знаєте, як підключитися до БД в PHP і закрити з'єднання!

Дякую за увагу!

Після того, як Ви встановили сервер MySQL, підключитися до нього Ви можете лише з цієї машини. Зроблено це з метою безпеки системи, оскільки у більшості випадків MySQL використовується в Web, а там у поодиноких випадках розносять web-сервер і сервер баз даних.

У корпоративному сегменті правильніше використовувати 1 сервер під всі схожі завдання. Нерозумно тримати MySQL з однією базою даних на кожному сервері, де він може знадобитися. Тому сервер баз даних має бути один, на якому заведено необхідну кількість баз даних під різні завдання.

До речі, у Web`і розносять сервер бази даних та web-сервер лише у тих випадках, коли потужності одного сервера не вистачає. Орендується виділений сервер та виноситися на нього база даних. Хотілося б уточнити, що робити це розумно лише у межах одного ДЦ.

Дозволяється підключатися до MySQL віддалено

У конфігураційному файлі MySQL є параметр bind-address, який відповідає за це, тому:

  1. відкриваємо конфігураційний файлдля редагування:
    sudo nano /etc/mysql/my.cnf
  2. коментуємо рядок:
    # bind-address = 127.0.0.1
  3. перезапускаємо MySQL:
    sudo service mysql restart

Закоментувати цей рядок рівнозначно тому, що присвоїти IP-адресу 0.0.0.0 , тобто дозволити підключатися всім. Вказати 2 IP-адреси в цьому рядку не можна. Якщо потрібно обмежити підключення до сервера MySQL, необхідно використовувати можливості iptables.

Тепер через telnet-клієнт Ви можете підключитися до сервера бази даних, але щоб зайти всередину потрібна обліковий запис, Якою можна підключатися не тільки з localhost. Для цього потрібно підключитися до MySQL із самого сервера та створити такого користувача:

Mysql -u root -p

І командою створюємо користувача:

GRANT ALL PRIVILEGES ON *.* TO "новий_користувач"@"віддалена_адреса" IDENTIFIED BY "пароль" WITH GRANT OPTION;

Цей рядок створює користувача з необмеженими правами, що робити не зовсім правильно. Правильніше максимально обмежити доступ користувача, який підключається віддалено. Тому команда може виглядати так:

GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,ALTER ON "ім'я_бази".* TO "новий_користувач"@"віддалена_адреса" IDENTIFIED BY "пароль" WITH GRANT OPTION;

Цією командою ми обмежили повноваження користувача лише однією базою даних та діями з нею.

Повний список усіх прав, які можна вказати користувачеві:

  • ALL PRIVILEGES– усі права на вказаний об'єкт за винятком призначення прав на цей об'єкт;
  • CREATE- Право створення таблиці;
  • ALTER- Право на зміну таблиці;
  • DROP- Право на знищення таблиці;
  • LOCK TABLES- Право на блокування таблиці;
  • CREATE TEMPORARY TABLES– декларація про створення тимчасових таблиць;
  • CREATE ROUTINE- Право на створення збережених процедур та функцій;
  • ALTER ROUTINE– право на зміну або знищення процедур і функцій, що зберігаються;
  • CREATE VIEW- Право створення уявлення;
  • TRIGGER- Право на створення та знищення тригерів;
  • INDEX– права на створення та знищення індексів;
  • EXECUTE- Право на виконання збережених процедур та функцій;
  • EVENT- Право створення подій;
  • CREATE USER– права на створення, знищення, перейменування користувача та зняття всіх прав. Призначається лише на глобальному рівні;
  • SELECT- Право на вибірку;
  • DELETE- Право видалення;
  • INSERT- Право на вставку;
  • UPDATE- Право на оновлення;
  • FILE– право використання команд SELECT … INTO OUTFILE і LOAD DATA INFILE ;
  • PROCESS- право на перегляд усіх процесів командою SHOW PROCESSLIST;
  • SHOW DATABASES– право перегляду списку схем;
  • SHOW VIEW– право перегляду списку представлений;
  • SHUTDOWN- Право на закриття.

У цій статті сьогодні поговоримо про створення підключення до бази даних та обговоримо який варіант краще використовувати процедурний чи об'єктно-орієнтований. Для початку давайте розберемо на якому рівні ми знаходимося, якщо це рівень повного новачка, тоді моя порада почати використовувати процедурний стиль підключення до бази даних. Раніше я писав статтю на цю тему на своєму блозі, детальніше про процедурний стиль підключення до бази даний читайте в статті: «Як підключитися до MySQL використовуючи PHP» . Якщо за плечима є вже якийсь досвід роботи з процедурним стилем підключення до бази даних, тоді Вас напевно, як і мене, мої проекти просто взяли і змусили використовувати об'єктно-орієнтований підхід.

Так чи інакше, ми зараз розберемо етапи побудови класу для створення підключення до бази. даних MySQLна мовою PHP. Нам знадобиться два PHP файли, в один файл ми «покладемо» клас для створення підключення до бази даних, а в другому будемо працювати з цим класом.

Створимо два файли:

  • index.php;
  • database.class.php;

Думаю, ми не маленькі діти і знаємо, що нам потрібно для роботи з PHP файлами. Встановлений веб- сервер Apache, PHP, СУБД MySQL і знає куди ці файли покласти - (для тих, хто не знає чи забув).

Файл у якому зберігатись клас я виношу в окремий файлі маю його у форматі: ім'я класу.class.php і я знаю, що зберігатись у мене в цьому файлі. Коли в проекті багато класів, можна загубитися, тому рекомендую називати файли з класами у форматі, описаному вище.

Файл database.class.php:

Давайте зараз розберемо, що було створено на даному кроці. За допомогою ключового слова «class», імені класу – DataBase та фігурний дужок ми створили тіло класу. У створеному класі ми створили дві властивості, $mConnect - де зберігатися результат з'єднання з базою даних і $mSelectDB - де зберігатися результат вибору бази даних. Ви могли помітити ключові слова в кожній властивості - public та static. Про що вони кажуть? Public означає, що властивість доступна поза класом, а static дає можливість звертатися або викликати властивість без створення екземпляра клас, що дуже часто зручно в роботі.

Додамо метод Connect() для створення з'єднання з базою:

".mysql_error()."

"; exit(); return false; ) // Повертаємо результат return self::$mConnect; ) ) ?>

  • $host - IP адреса сервера, на локальному ПК це localhost;
  • user – ім'я користувача бази даних;
  • $pass – пароль користувача бази даних;
  • $name - ім'я бази даних, до якої підключаємося;

Функція mysql_connect() створює з'єднання з базою даних, результат виконання зберігає $mConnect. Далі йде перевірка конструкцією IF: Якщо підключення не пройшло успішно, вивести повідомлення про помилку… Інакше PHP проігнорує блок IF та піде далі вибирати базу даних. Функція mysql_select_db() робить вибір імені бази даних, якщо в базі немає запитуваної бази даних, у разі програма повідомить користувачеві про помилку. Якщо все буде успішно, з'єднання з базою даних поверне return.

Додаємо метод Close():

На жаль, не вдалося підключитися до сервера MySQL

"; exit(); return false; ) // Пробуємо вибрати базу даних self::$mSelectDB = mysql_select_db($name, self::$mConnect); // Якщо база даних не вибрана, вивести повідомлення про помилку.. if( !self::$mSelectDB) ( echo "

".mysql_error()."

"; exit(); return false; ) // Повертаємо результат return self::$mConnect; ) // Метод закриває з'єднання з базою даних public static function Close() ( // Повертає результат return mysql_close(self::$mConnect) ; ) ) ?>

Наступний і останній у цьому класі метод Close() - закриває з'єднання з базою даних, функція mysql_close() закриває з'єднання з сервером MySQL і повертає результат.

Файл index.php:

За допомогою функції define() ми створили константи для зберігання параметрів з'єднання з базою даних. Require_once підключає наш клас DataBase у файл index.php.

Давайте пригадаємо ключове слово static, яке використовувалося у класі DataBase у властивостях та методах даного класу. Це дає нам можливість звертатися до властивостей та методів класу через "::" (дві двокрапки). Метод DataBase::Connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_DATABASE), приймає 4 параметри - створені функції define() константи, в яких зберігається інформація про з'єднання з базою даних. Якщо з'єднання буде успішно, метод Connect() поверне нам з'єднання з базою даних. Далі ми зможемо працювати та виконувати запити до бази даних. Функція mysql_query() – виконує запит до бази даних. Функція mysql_fetch_assoc() – обробляє ряд результату запиту та повертає асоціативний масив. Конструкція echo виводить версію сервера MySQL. І на завершення метод DataBase::Close() - закриє з'єднання з базою даних.

За допомогою 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) або 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:

Цей спосіб:

  1. зручніше;
  2. швидше до 40 разів;
  3. підвищена безпека;
  4. є нові можливості та функції;

Приклад з'єднання з БД на 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 – це окрема тема.

3 методи підключення до MySQL з PHP з прикладами коду


Щоб почати користуватися базою даних MySQL, треба в першу чергу зрозуміти, як підключитися з вашої PHP-програми (скрипта) до цієї самої бази даних MySQL.

У цій статті описано такі три методи, а також відповідні приклади PHP-коду, в яких пояснюється, як підключитися до вашої бази даних з PHP.

Для всіх наведених нижче прикладів ми підключатимемося до вже існуючої бази даних MySQL. Примітка: все, що тут пояснюється, також буде працювати з MariaDB, так само як і з MySQL.

1. Підключення до PHP за допомогою розширення mysqli
*mysqli означає MySQL Improved

Створіть наступний файл mysqli.php

connect_error) ( die("Помилка: неможливо підключитися: " . $conn->connect_error); ) echo "Підключилися до бази.
"; $result = $conn->query("SELECT id FROM goroda"); echo "Кількість рядків: $result->num_rows"; $result->close(); $conn->close(); ?> наведений вище код:

  • mysqli – ця функція ініціює нове з'єднання з використанням розширення mysqli. Функція приймає чотири аргументи:
    1. localhost ім'я хоста, на якому запущено базу даних MySQL
    2. name - ім'я користувача MySQL для підключення
    3. pass - пароль для користувача mysql
    4. db – база даних MySQL для підключення.
  • qvery - функція запиту MySQL. У цьому прикладі ми вибираємо стовпець id з бази даних міст.
  • Нарешті, ми показуємо кількість рядків, вибраних за допомогою змінної num_rows в результаті. Ми також закриваємо як результат, так і змінну сполуки, як показано вище.
Коли ви викликаєте вищезгаданий mysqli.php зі свого браузера, ви побачите наступний висновок, який вказує на те, що PHP зміг підключитися до бази даних MySQL і отримати дані.

Підключились до бази. Кількість рядків: 6 2. Підключення з PHP MySQL PDO Extension
*PDO означає об'єкти даних PHP

Драйвер PDO_MYSQL реалізує інтерфейс PDO, який надається PHP, для підключення з вашого PHP-скрипту до бази даних MySQL.

Створіть наступний файл mysql-pdo.php:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Підключилися до бази.
$sql = "SELECT id FROM goroda"; print "Список id:
"; foreach ($conn->query($sql) as $row) ( print $row["id"] . "
"; ) $conn = null; ) catch(PDOException $err) ( echo "Помилка: неможливо підключитися: " . $err->getMessage(); ) ?> У наведеному вище:

  • new PDO - створить новий об'єкт PDO, який прийме такі три аргументи:
    1. mysql connect string: він буде у форматі "mysql:host=localhost;dbname=db". У наведеному прикладі db працює на localhost, і ми підключаємося до бази даних db.
    2. Ім'я користувача MySQL для підключення
    3. Пароль для користувача mysql
  • змінна $sql - створити запит sqlВи хочете виконати. У цьому прикладі ми вибираємо стовпець id з таблиці міст.
  • query ($ sql). Тут ми виконуємо запит SQL, який ми щойно створили.
  • foreach. Тут ми перебираємо результат із зазначеної вище команди запиту та зберігаємо її у змінній $row, а потім виводимо її за допомогою echo.
  • У MySQL PDO, щоб закрити з'єднання, просто встановіть змінну $conn значення null.
Коли ви викликаєте вказаний вище скрипт mysqli.php зі свого браузера, ви побачите наступні рядки; вони означають, що PHP зміг підключитися до бази даних MySQL та отримати інформацію:

Підключились до бази. Список ID: 1 2 3 4 5 6 3. Підключення з PHP з використанням застарілих функцій mysql

Використовуйте цей метод тільки якщо ви використовуєте більше стару версію PHP і з якоїсь причини не можете оновити її до нової версії. Рекомендується використовувати метод №2 і метод №3, наведені вище, замість цього методу. Я ввімкнув цей метод лише для довідки, а не як рекомендацію для використання.

Це конкретне розширення було застаріло від версії PHP 5.5. Але, починаючи з версії PHP 7.0, це навіть не працюватиме, оскільки воно було видалено. Починаючи з версії PHP 5.5, коли ви використовуєте ці функції, вона генеруватиме помилку E_DEPRECATED.

Створіть файл mysql.php:

$result = mysql_query("SELECT id FROM goroda"); $row = mysql_fetch_row($result); echo "id 1: ", $row, "
\n"; mysql_close($conn); ?> У наведеному вище:

  • Функція mysql_connect приймає три аргументи:
    1. ім'я хоста, в якому запущено базу даних MySQL;
    2. ім'я користувача MySQL для підключення;
    3. пароль для користувача mysql Тут він підключається до бази MySQL, яка виконується на локальному сервері з використанням імені користувача та його пароля.
  • Функція mysql_select_db. Як випливає з назви, вона вибирає базу даних, до якої потрібно підключитися. Еквівалентно команді "use". У цьому прикладі ми підключаємось до бази даних db.
  • Функція mysql_query – використовується для вказівки вашого запиту MySQL. У цьому прикладі ми вибираємо стовпець id з бази даних міст.
  • mysql_fetch_row. Використовуйте цю функцію для вилучення рядків із SQL-запиту, який ми щойно створили.
  • Нарешті закрийте з'єднання, використовуючи команду mysql_close, як показано вище.
Коли ви викликаєте вищезгаданий mysql-legacy.php зі свого браузера, ви побачите наступний висновок, який вказує, що PHP зміг підключитися до бази даних MySQL та отримати інформацію:

Підключились до бази. id 1: 1 Таким чином можна підключатися до MySQL. Повторюся, краще використовувати два перші способи; о