Метод quote класса Connection
Метод quote класса Connection принимает строку
и возвращает её экранированную версию, пригодную для
безопасной подстановки в SQL-запрос. Первым параметром
передаётся значение, которое нужно экранировать. Вторым
необязательным параметром можно указать тип данных
(например, ParameterType::STRING или ParameterType::INTEGER).
Метод полезен, когда нужно вручную собрать SQL-строку
без использования подготовленных выражений.
Синтаксис
public function quote(string $value, int $type = ParameterType::STRING): string
Пример
Давайте экранируем простое строковое значение:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineDBALConnection;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$value = "O'Reilly";
$quoted = $connection->quote($value);
return new Response($quoted);
}
}
?>
Результат выполнения кода:
'O\'Reilly'
Пример
Давайте экранируем значение и подставим его в SQL-запрос:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineDBALConnection;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$name = 'abcde';
$quoted = $connection->quote($name);
$sql = "SELECT * FROM article WHERE name = " . $quoted;
return new Response($sql);
}
}
?>
Результат выполнения кода:
SELECT * FROM article WHERE name = 'abcde'
Пример
Давайте экранируем целочисленное значение, указав тип:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineDBALConnection;
use DoctrineDBALParameterType;
class ArticleController extends AbstractController
{
public function index(Connection $connection): Response
{
$id = 5;
$quoted = $connection->quote($id, ParameterType::INTEGER);
return new Response($quoted);
}
}
?>
Результат выполнения кода:
5
Смотрите также
-
класс
Connection,
который представляет соединение с базой данных -
метод
executeQuery,
который выполняет SELECT-запрос и возвращает результат -
метод
executeStatement,
который выполняет INSERT, UPDATE или DELETE -
метод
lastInsertId,
который возвращает ID последней вставленной записи