Ce face QUOTE()
QUOTE() transformă o valoare într-un literal SQL sigur: o pune între apostrofuri și adaugă \ înaintea apostrofurilor, backslash-urilor și altor caractere speciale. Pentru NULL returnează cuvântul NULL, fără ghilimele.
Este util când generezi instrucțiuni SQL din SQL (de exemplu, un export de INSERT-uri).
Parametri
| Parametru | Descriere |
|---|---|
sir |
Valoarea pusă între apostrofuri. |
Ce returnează
Textul gata de folosit într-o instrucțiune SQL.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE clienti (
id INT PRIMARY KEY,
nume VARCHAR(50),
oras VARCHAR(30),
email VARCHAR(100),
telefon VARCHAR(20)
);
INSERT INTO clienti VALUES
(1, 'Ana Pop', 'Iași', 'ana.pop@exemplu.ro', '0722-123-456'),
(2, 'bogdan ionescu', 'Cluj-Napoca', 'bogdan@firma.ro', '0744 555 101'),
(3, 'Cristina Marin', 'Brașov', 'cristina@exemplu.ro', '0733.222.909'),
(4, 'Dan Stoica', 'Timișoara', NULL, '0755123123');
Exemplul 1: Apostrof și NULL
SELECT QUOTE('O''Neil') AS cu_apostrof, QUOTE(NULL) AS nul;
Rezultat
+-------------+------+
| cu_apostrof | nul |
+-------------+------+
| 'O\'Neil' | NULL |
+-------------+------+
Exemplul 2: Generarea unor instrucțiuni INSERT
SELECT CONCAT('INSERT INTO clienti_vechi (nume, email) VALUES (', QUOTE(nume), ', ', QUOTE(email), ');') AS sql_generat
FROM clienti
ORDER BY id;
Rezultat
+-------------------------------------------------------------------------------------------+
| sql_generat |
+-------------------------------------------------------------------------------------------+
| INSERT INTO clienti_vechi (nume, email) VALUES ('Ana Pop', 'ana.pop@exemplu.ro'); |
| INSERT INTO clienti_vechi (nume, email) VALUES ('bogdan ionescu', 'bogdan@firma.ro'); |
| INSERT INTO clienti_vechi (nume, email) VALUES ('Cristina Marin', 'cristina@exemplu.ro'); |
| INSERT INTO clienti_vechi (nume, email) VALUES ('Dan Stoica', NULL); |
+-------------------------------------------------------------------------------------------+
Greșeli frecvente
- Folosești
QUOTE()în aplicație în loc de interogări pregătite (prepared statements). Pentru datele venite de la utilizatori, interogările pregătite sunt metoda corectă împotriva SQL injection.