webForumDet fria alternativet

mysql_real_escape_string()

2 svar · 367 visningar · startad av Mr. N.

Mr. N.Medlem sedan sep. 20023 794 inlägg
#1

En snabb fråga kring mysql_real_escape_string():
När man har kört det på indata till MySQL, måste man köra stripslashes() (eller liknande) när man vill läsa det från databasen igen?

K@llenMedlem sedan mars 20032 654 inlägg
#2

Kör man addslashes() en gång (antingen manuellt eller automatiskt) så strippar mysql bort tillagda backslash. Skulle tro att samma sak sker med mysql_real_escape_string().

Hittade denna notering i manualen:

Not: If magic_quotes_gpc is enabled, first apply stripslashes() to the data. Using this function on data which has already been escaped will escape the data twice.

henkeMedlem sedan dec. 1999271 inlägg
#3

Det smidigaste för att undvika dubbla slashes är att använda sig av följande funktion (finns med i php-manualen under just mysql_real_escape_string):

<?php
// Quote variable to make safe
function quote_smart($value)
{
    // Stripslashes
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    // Quote if not integer
    if (!is_numeric($value)) {
        $value = "'" . mysql_real_escape_string($value) . "'";
    }
    return $value;
}
Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb