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