addslashes vs. mysql_real_escape_string

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • leegold2

    addslashes vs. mysql_real_escape_string


    When I look directly in my db field I see a difference between these two
    functions. The top line (seebelow) was inserted with addslashes vs. the
    bottom line where I used mysql_real_esca pe_string. Obviously addslashes
    really escapes the apostrophe. But I thought mysql_real_esca pe_string is
    supposed to do that too - can anyone explain? Thanks, Lee G.

    This is Aviva\'s website.
    This is Sarah's website.
  • Brion Vibber

    #2
    Re: addslashes vs. mysql_real_esca pe_string

    leegold2 wrote:[color=blue]
    > When I look directly in my db field I see a difference between these two
    > functions. The top line (seebelow) was inserted with addslashes vs. the
    > bottom line where I used mysql_real_esca pe_string. Obviously addslashes
    > really escapes the apostrophe. But I thought mysql_real_esca pe_string is
    > supposed to do that too - can anyone explain? Thanks, Lee G.
    >
    > This is Aviva\'s website.
    > This is Sarah's website.[/color]

    What were:
    * the original strings before escaping
    * the strings after escaping, as they appeared in the SQL you sent to
    the server?

    I don't see any difference on a test string with an apostrophe on these
    functions in 4.3.8 or 5.0.2:
    <?php
    $originalstring = "Apostrophe 's rock";
    echo $originalstring , "\n";
    echo addslashes( $originalstring ), "\n";
    echo mysql_escape_st ring( $originalstring ), "\n";
    echo mysql_real_esca pe_string( $originalstring ), "\n";
    ?>

    output:
    Apostrophe's rock
    Apostrophe\'s rock
    Apostrophe\'s rock
    Apostrophe\'s rock

    Can you confirm that the pre-escaping string for "This is Aviva\'s
    website." did not contain a backslash, and that the same query was used
    to insert both samples? Did the data from from a literal string, a file,
    or from a web form? If you're using the magic_quotes_gp c option
    (unfortunately the default is on, I believe), you need to run
    stripslashes() on any text that comes from GET/POST/COOKIE variables
    before further processing.

    -- brion vibber (brion @ pobox.com)

    Comment

    Working...