При работе с PHP 7 и MySQL нередко возникают проблемы с функцией mysql_query
. Эта функция используется для выполнения SQL-запросов к базе данных MySQL. Однако изменения в PHP 7 и улучшения расширения MySQL привели к прекращению поддержки функции mysql_query
. В этой статье блога мы рассмотрим несколько альтернативных методов выполнения запросов MySQL с использованием PHP 7, а также приведем примеры кода, которые помогут вам решить эту проблему.
- Метод: использование расширения 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);
?>
- Метод: использование расширения 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();
}
?>
- Метод: использование подготовленных операторов
Подготовленные операторы предлагают безопасный способ выполнения 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, и обеспечить бесперебойное подключение к базе данных.