Устранение проблем с запросами MySQL в PHP 7: методы и примеры кода

При работе с PHP 7 и MySQL нередко возникают проблемы с функцией mysql_query. Эта функция используется для выполнения SQL-запросов к базе данных MySQL. Однако изменения в PHP 7 и улучшения расширения MySQL привели к прекращению поддержки функции mysql_query. В этой статье блога мы рассмотрим несколько альтернативных методов выполнения запросов MySQL с использованием PHP 7, а также приведем примеры кода, которые помогут вам решить эту проблему.

  1. Метод: использование расширения MySQLi
    Расширение MySQLi представляет собой улучшенную версию расширения MySQL, предоставляющую расширенные функции и повышенную безопасность. Вот пример выполнения запроса MySQL с использованием расширения MySQLi:
<?php
$connection = mysqli_connect("localhost", "username", "password", "database");
if (!$connection) {
    die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT * FROM my_table";
$result = mysqli_query($connection, $query);
if ($result) {
    // Process the query result
    while ($row = mysqli_fetch_assoc($result)) {
        // Do something with the data
    }
} else {
    echo "Query failed: " . mysqli_error($connection);
}
mysqli_close($connection);
?>
  1. Метод: использование расширения PDO
    PDO (объекты данных PHP) — это уровень абстракции базы данных, который обеспечивает согласованный интерфейс для доступа к базам данных. Вот пример выполнения запроса MySQL с использованием PDO:
<?php
$dsn = "mysql:host=localhost;dbname=database";
$username = "username";
$password = "password";
try {
    $connection = new PDO($dsn, $username, $password);
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $query = "SELECT * FROM my_table";
    $result = $connection->query($query);
    if ($result) {
        // Process the query result
        foreach ($result as $row) {
            // Do something with the data
        }
    } else {
        echo "Query failed: " . $connection->errorInfo()[2];
    }
    $connection = null;
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>
  1. Метод: использование подготовленных операторов
    Подготовленные операторы предлагают безопасный способ выполнения SQL-запросов, защищающий от атак с использованием SQL-инъекций. Вот пример использования подготовленных операторов с расширением MySQLi:
<?php
$connection = mysqli_connect("localhost", "username", "password", "database");
if (!$connection) {
    die("Connection failed: " . mysqli_connect_error());
}
$query = "SELECT * FROM my_table WHERE id = ?";
$stmt = mysqli_prepare($connection, $query);
if ($stmt) {
    $id = 123;
    mysqli_stmt_bind_param($stmt, "i", $id);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    if ($result) {
        // Process the query result
        while ($row = mysqli_fetch_assoc($result)) {
            // Do something with the data
        }
    } else {
        echo "Query failed: " . mysqli_error($connection);
    }
    mysqli_stmt_close($stmt);
} else {
    echo "Statement preparation failed: " . mysqli_error($connection);
}
mysqli_close($connection);
?>

В PHP 7 функция mysql_queryустарела, и необходимо переключиться на альтернативные методы выполнения запросов MySQL. В этой статье мы рассмотрели три метода: использование расширения MySQLi, расширения PDO и подготовленных операторов. Приняв эти методы и следуя предоставленным примерам кода, вы сможете решить проблему, связанную с тем, что mysql_queryне работает в PHP 7, и обеспечить бесперебойное подключение к базе данных.