Re: Removing slashes from the database

From: Date: Fri, 05 Jun 2015 01:12:27 +0000
Subject: Re: Removing slashes from the database
References: 1 2 3 4 5 6 7  Groups: php.db 
Request: Send a blank email to php-db+get-49037@lists.php.net to get a copy of this message
Ron, If this is a display issue, have you tried running stripslashes($outputstring) on the output from the database? That is the usual way to handle it Bastien On Thu, Jun 4, 2015 at 7:29 AM Ron Piggott <ron.piggott@actsministries.org> wrote: > > On 03/06/15 09:37, Aziz Saleh wrote: > > On Wed, Jun 3, 2015 at 12:25 AM, Ron Piggott > > <ron.piggott@actsministries.org > > <mailto:ron.piggott@actsministries.org>> wrote: > > > > On 02/06/15 23:20, Aziz Saleh wrote: > >> On Tue, Jun 2, 2015 at 11:08 PM, Ron Piggott > >> <ron.piggott@actsministries.org > >> <mailto:ron.piggott@actsministries.org>> > >> wrote: > >> > >> > >> On 02/06/15 22:58, Aziz Saleh wrote: > >>> > >>> > >>> On Tue, Jun 2, 2015 at 10:50 PM, Ron Piggott > >>> <ron.piggott@actsministries.org > >>> > >>> <mailto:ron.piggott@actsministries.org>> wrote: > >>> > >>> > >>> I am working through the process of removing \'s from > >>> the database. I am trying to get this query using a > >>> variable starting with "<<<" > >>> > >>> $query1 =<<<EOF > >>> UPDATE TABLE_NAME SET > >>> COLUMN_NAME = > >>> > > REPLACE(REPLACE(REPLACE(COLUMN_NAME,'\\\'','\''),'\\\"','"'),'\\\\','\\'); > >>> EOF; > >>> > >>> But when I go to execute the query I am getting the error: > >>> > >>> |#1064 - You have an error in your SQL syntax; check the > >>> manual that corresponds to your MariaDB server version > >>> for the right syntax to use near > >>> > >>> '\''),'\\"','"'),'\\','\')' at > >>> line 1 | > >>> > >>> Could someone help me know what \ and ' should be part > >>> of this query so it will execute correctly --- only > >>> removing \'s from the database table text columns? > >>> > >>> Thank you. > >>> > >>> Ron > >>> > >>> > >>> When you say remove, as replace all occurrences with an > >>> empty string, or replace with a different character? > >> I want \" to become just " > >> I want \' to become just ' > >> I also want however \ was escaped to become just \ > >> > >> (I am trying to revert the text back to what it was > >> originally before mysql_escape_string was applied) > >> > >> I hope this helps elaborate. > >> > >> Ron > >> > >> > >> For simplicity sake, do each one in its own query and see which > >> one breaks if any: > >> > >> > >> $query1 =<<<EOF > >> UPDATE TABLE_NAME SET > >> COLUMN_NAME = > >> > >> REPLACE(COLUMN_NAME,'\"','"') > >> EOF; > >> $query2 =<<<EOF > >> UPDATE TABLE_NAME SET > >> COLUMN_NAME = > >> > >> REPLACE(COLUMN_NAME,"\'","'") > >> EOF; > >> $query3 =<<<EOF > >> UPDATE TABLE_NAME SET > >> COLUMN_NAME = > >> > >> REPLACE(COLUMN_NAME,'\\\\','\\') > >> EOF; > >> > >> However, personally, I do not recommend this sort of action. Your > >> data should be escaped in the DB. Your MySQL driver should be > >> handling the escape/un-escape when setting/retrieving the data. > > A friend pointed out to me today: In the earlier versions of PHP > > there was a setting called 'magic_quotes_gpc'. When enabled > > slashes were added by default. This setting has since been > > depreciated as of PHP 5.3 and was removed completely in PHP 5.4. > > I am using PHP 5.6. > > > > Thank you for the suggestion of running 3 separate commands. > > Individually these execute successfully. Is it even possible to > > do a "REPLACE" in the fashion I have noted? > > > > Ron > > > > > > It is possible, but sometimes with the clutter you don't notice a > > syntax issue. This seems to work fine: > > > > $query =<<<EOF > > UPDATE TABLE_NAME SET > > COLUMN_NAME = > > > > REPLACE(REPLACE(REPLACE(COLUMN_NAME,'\\\\','\\'),"\'","'"),'\"','"') > > EOF; > I am still having something weird happening which I don't understand. > > When I do print_r( $query ); the output is > > UPDATE donation_paypal_code SET > option = > > REPLACE(REPLACE(REPLACE(option,'\\','\'),"\'","'"),'\"','"'); > > and I receive the database error > > ( > [0] => 42000 > [1] => 1064 > [2] => You have an error in your SQL syntax; check the manual that > corresponds to your MariaDB server version for the right syntax to use > near '')' at line 1 > ) > > I have confirmed my script has \\\\ & \\ > > When I "search" using phpMyAdmin \ turns into \\\\ and \\ turns into > \\\\\\\\ Is this what I should be using in order to get PHP to submit > what I want into the database? > > Thanks, Ron > > >

« previous php.db (#49037) next »