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

Без соединения с базой данных (БД) сегодня не работает практически ни один сайт...поэтому и мы рассмотрим как соединяться с MySQL при помощи 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 ("Ошибка такая то"); - переводится как или умри с такой-то ошибкой - чтобы сразу найти где ошибка.

Пример соединения с БД на php с выборкой из таблицы

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());

 

Обратите внимание: в php8 будет ошибка Uncaught Error: Call to undefined function mysql_connect() - так как уже такой функции нет и надо применять mysqli_connect()  

 

index.php

require_once 'config.php';

// Выполнить запрос. Если ошибка - выводим
    $result = mysql_query('SELECT Name, Money FROM Dolg ORDER BY Money DESC LIMIT 5') or die(mysql_error());
    
    echo "Кому я должен по убыванию: <br><br>";
    
    // Выборка результатов запроса
    while ( $row = mysql_fetch_assoc($result) ) {
        echo $row['Name'] . " с долгом " . $row['Money'] . " рублей.<br>";
    }
    
    // освобождение используемой памяти
    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 "Кому я должен по убыванию: <br><br>";
    
        // Выборка результатов запроса
        while ( $row = mysqli_fetch_assoc($result) ) {
        echo $row['Name'] . " с долгом " . $row['Money'] . " рублей.<br>";
        }
    
        // освобождение используемой памяти
        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 "Кому я должен по убыванию: <br><br>";
    
        // Выборка результатов запроса
        while ( $row = $result->fetch_assoc() ) {
        echo $row['Name'] . " с долгом " . $row['Money'] . " рублей.<br>";
        }
    
        // освобождение используемой памяти
        $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 "Кому я должен по убыванию: <br><br>";
        
        // Выборка результатов запроса
            while ( $stmt->fetch() ) {
            echo $col1 . " с долгом " . $col2 . " рублей.<br>";
        }
        
        // освобождение используемой памяти
        $stmt->close();
        
        // Закрываем соединение
        $mysqli->close();
        
    }

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

 

---

Реальный пример работы с Mysql с помощью PHP подробно с выборкой и тд

1. Подключение к базе данных

Для подключения к базе данных MySQL в PHP используется функция mysqli_connect(). Она принимает четыре параметра: имя хоста, имя пользователя, пароль и имя базы данных.

Пример:


$host = "localhost";
$username = "user";
$password = "password";
$dbname = "database";

$conn = mysqli_connect($host, $username, $password, $dbname);
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}


2. Выполнение запросов

Для выполнения запросов к базе данных MySQL в PHP используется функция mysqli_query(). Она принимает два параметра: объект соединения и SQL-запрос.

Пример:


$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "Name: " . $row["name"] . " Email: " . $row["email"];
    }
} else {
    echo "0 results";
}

 

Кстати, перебрать ассоциативный массив, пришедший из БД можно еще так:

if (mysqli_num_rows($categories) > 0) {
echo '<ul>';
foreach ($categories as $category) {
echo '<li>' . $category['name'] . '</li>';
}
echo '</ul>';
}

будет тоже самое!


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

3. Использование параметров

Для безопасного выполнения запросов к базе данных MySQL в PHP рекомендуется использовать параметры. Для этого используется функция mysqli_prepare(), которая принимает объект соединения и SQL-запрос с заполнителями вместо значений.

Пример:


$name = "John";
$email = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";

$stmt = mysqli_prepare($conn, "INSERT INTO users (name, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
mysqli_stmt_execute($stmt);


В данном примере мы добавляем нового пользователя в таблицу users с помощью подготовленного запроса. Вместо значений мы используем заполнители в виде вопросительных знаков, а затем связываем их с переменными с помощью функции mysqli_stmt_bind_param().

4. Использование транзакций

Для выполнения нескольких запросов к базе данных MySQL в рамках одной транзакции в PHP используется функция mysqli_begin_transaction(). Она принимает объект соединения и начинает новую транзакцию.

Пример:


mysqli_begin_transaction($conn);

mysqli_query($conn, "UPDATE users SET name='John' WHERE id=1");
mysqli_query($conn, "UPDATE orders SET status='paid' WHERE user_id=1");

if (mysqli_commit($conn)) {
    echo "Transaction committed";
} else {
    echo "Transaction rolled back";
}


В данном примере мы обновляем имя пользователя и статус заказов в рамках одной транзакции. После выполнения всех запросов мы коммитим транзакцию с помощью функции mysqli_commit(). Если при выполнении запросов произошла ошибка, мы откатываем транзакцию с помощью функции mysqli_rollback().

Добавить комментарий


Защитный код
Обновить

Вы здесь: Сайтостроение Создание сайта PHP Создание соединения с БД MySQL разными способами