PDO::quote
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.2.1)
PDO::quote — Inclui aspas em uma string para uso em uma consulta
Descrição
PDO::quote() coloca aspas na string de entrada (se necessário) e escapa caracteres especiais dentro da string de entrada, usando um estilo de aspas (ex.: simples ou duplas) apropriado ao driver subjacente.
Se esta função estiver sendo usada para construir instruções SQL, é fortemente recomendado usar PDO::prepare() para preparar instruções SQL com parâmetros vinculados em vez de usar PDO::quote() para interpolar a entrada do usuário em uma instrução SQL. Instruções preparadas com parâmetros vinculados não são apenas mais portáveis, mais convenientes e imunes à injeção de SQL, mas geralmente são muito mais rápidas de executar do que consultas interpoladas, já que tanto o servidor quanto o cliente podem armazenar em cache uma forma compilada da consulta.
Nem todos os drivers PDO implementam esse método (principalmente PDO_ODBC). Considere usar instruções preparadas.
Segurança: o conjunto de caracteres padrão
O conjunto de caracteres deve ser definido no nível do servidor ou na própria conexão do banco de dados (dependendo do driver) para afetar o PDO::quote(). Consulte a documentação específica do driver para obter mais informações.
Parâmetros
string
-
A string que será envolvida por aspas.
type
-
Fornece uma dica sobre o tipo de dados para drivers que possuem estilos de cotação alternativos. Por exemplo,
PDO_PARAM_LOB
dirá ao driver para escapar dados binários.
Valor Retornado
Retorna uma string entre aspas que é teoricamente segura para passar em
uma instrução SQL. Retorna false
se o driver não suportar inserção de aspas
dessa forma.
Exemplos
Example #1 Inserindo aspas em uma string normal
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* String simples */
$string = 'Teste';
print "String sem aspas: $string\n";
print "String com aspas: " . $conn->quote($string) . "\n";
?>
O exemplo acima produzirá:
String sem aspas: Teste String com aspas: 'Teste'
Example #2 Inserindo aspas em uma string perigosa
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* String perigosa */
$string = 'String \' perversa';
print "String sem aspas: $string\n";
print "String com aspas:" . $conn->quote($string) . "\n";
?>
O exemplo acima produzirá:
String sem aspas: String ' perversa String com aspas: 'String '' perversa'
Example #3 Inserindo aspas em uma string complexa
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* String complexa */
$string = "St'ri''ng \"com'\"plexa";
print "String sem aspas: $string\n";
print "String com aspas: " . $conn->quote($string) . "\n";
?>
O exemplo acima produzirá:
String sem aspas: St'ri''ng "com'"plexa String com aspas: 'St''ri''''ng "com''"plexa'
Veja Também
- PDO::prepare() - Prepara uma instrução para execução e retorna um objeto de instrução
- PDOStatement::execute() - Executa ums instrução preparada