webForumDet fria alternativet

mysql_real_escape_string()

PHP

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

Medlem sedan sep. 20025 506 inlägg
Frågan#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?

Medlem sedan mars 20032 667 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.

Medlem sedan dec. 1999286 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;
}
257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)