Re: Sanitizing potential MySQL strings with no database connection
| From: | Tommy Pham | Date: | Sat, 17 Oct 2009 23:14:55 +0000 |
| Subject: | Re: Sanitizing potential MySQL strings with no database connection | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-299023@lists.php.net to get a copy of this message | ||
----- Original Message ----
> From: Dotan Cohen <dotancohen@gmail.com>
> To: Tommy Pham <tommyhp2@yahoo.com>
> Cc: php-general. <php-general@lists.php.net>
> Sent: Sat, October 17, 2009 10:59:52 AM
> Subject: Re: [PHP] Sanitizing potential MySQL strings with no database connection
>
> > I don't think so since the mysql_real_escape_string() requires a connection
> handler. Why not use bind param?
> >
>
> Thanks. I just googled bind param but I am still a bit unclear as to
> what is going on.
>
> To be clear, I have a file of functions that I use in many scripts,
> lets call it functions.inc. One of the functions calls
> mysql_real_escape_string() but in order to do that it looks like I
> have to connect to a database. However, different scripts connect to
> different databases, and some do not connect to a database at all, so
> I cannot simple connect to a database from the functions.inc file as
> that will interfere with the database connections going on in the
> scripts including that file.
>
> --
> Dotan Cohen
>
> http://what-is-what.com
> http://gibberish.co.il
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
I assumed the reason you wanted to do escape the string so that you could perform DB operations. In
your select/insert/update class(es)/function(s), you could just use prepare statement and bind
param. Thus, no need to escape the string to protect against injection. It's also faster if
by chance you're doing several updates/inserts due to the nature of prepare statement. You
could use a call back function in case you have a varying size array of parameters, making your code
more adaptable and somewhat smaller. I generally prefer using prepare statement + bind param over
escape string + query for speed and flexibility.
http://www.php.net/manual/en/mysqli.prepare.php
http://www.php.net/manual/en/mysqli-stmt.bind-param.php
have good examples.
Regards,
Tommy