mysqli::real escape string
mysqli::real_escape_string
mysqli_real_escape_string (PHP 5, PHP 7, PHP 8)
mysqli::real_escape_string -- mysqli_real_escape_string — Escaperar specialtecken i en sträng för användning i ett SQL-uttalande, med hänsyn till den aktuella teckenuppsättningen för anslutningen
Beskrivning
Objektorienterad stil
public mysqli::real_escape_string(string $string): string
Procedurell stil
mysqli_real_escape_string(mysqli $mysql, string $string): string
Denna funktion används för att skapa en giltig SQL-sträng som kan användas i ett SQL-uttalande. Den angivna strängen kodas för att producera en escaperad SQL-sträng, med hänsyn till den aktuella teckenuppsättningen för anslutningen.
Varning
Säkerhet: den förvalda teckenuppsättningen
Teckenuppsättningen måste ställas in antingen på servernivå eller med API-funktionen mysqli_set_charset()
för att påverka mysqli_real_escape_string()
. Se konceptavsnittet om teckenuppsättningar för mer information.
Parametrar
- mysql
- Endast procedurell stil: Ett mysqli-objekt som returneras av
mysqli_connect()
ellermysqli_init()
.
- string
- Strängen som ska escaperas.
Tecken som kodas är NUL (ASCII 0), \n, \r, \, ', ", och CTRL+Z.
Returnerar
Returnerar en escaperad sträng.
Exempel
Exempel #1 mysqli::real_escape_string() exempel
Objektorienterad stil
<?php mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); $city = "'s-Hertogenbosch"; /* denna fråga med escaperad $city kommer att fungera */ $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $mysqli->real_escape_string($city)); $result = $mysqli->query($query); printf("Select returned %d rows.\n", $result->num_rows); /* denna fråga kommer att misslyckas eftersom vi inte escaperade $city */ $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city); $result = $mysqli->query($query); ?>
Procedurell stil
<?php mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $mysqli = mysqli_connect("localhost", "my_user", "my_password", "world"); $city = "'s-Hertogenbosch"; /* denna fråga med escaperad $city kommer att fungera */ $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", mysqli_real_escape_string($mysqli, $city)); $result = mysqli_query($mysqli, $query); printf("Select returned %d rows.\n", mysqli_num_rows($result)); /* denna fråga kommer att misslyckas eftersom vi inte escaperade $city */ $query = sprintf("SELECT CountryCode FROM City WHERE name='%s'", $city); $result = mysqli_query($mysqli, $query); ?>
Ovanstående exempel kommer att ge ett resultat som liknar:
Select returned 1 rows. Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's-Hertogenbosch'' at line 1 in...
Se även
mysqli_set_charset()
- Ställer in klientens teckenuppsättning