61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
| # ==== Purpose ====
 | |
| #
 | |
| # Escape occurences of " or ' in a string, in order to be used inside
 | |
| # an SQL statement.
 | |
| #
 | |
| # ==== Usage ====
 | |
| #
 | |
| # --let $escape_string= String
 | |
| # [--let $enclosing_char= "|' (default is ")]
 | |
| # --source include/escape_sql.inc
 | |
| # --echo $escape_string
 | |
| #
 | |
| # Parameters:
 | |
| #   $escape_string
 | |
| #     String to search for occurences of the $enclosing_char and
 | |
| #     escape them according to SQL syntax. It is also the output
 | |
| #     parameter.
 | |
| 
 | |
| #   $enclosing_char
 | |
| #     The character that will be used to enclose $escape_string when
 | |
| #     included in an SQL statement.
 | |
| #
 | |
| 
 | |
| if (!$escape_string)
 | |
| {
 | |
|   --die Error: set $escape_string before sourcing escape_sql.inc
 | |
| }
 | |
| 
 | |
| if ($escape_string != '')
 | |
| {
 | |
|   --let $_enclosing_char= "
 | |
|   if ($enclosing_char)
 | |
|   {
 | |
|     --let $_enclosing_char= $enclosing_char
 | |
|   }
 | |
| 
 | |
| 
 | |
|   --let $_output_filename= `SELECT UUID()`
 | |
|   --let $_output_filename= $MYSQLTEST_VARDIR/tmp/$_output_filename
 | |
|   --let full_output_filename= $_output_filename
 | |
|   --let to_replace= $escape_string
 | |
|   --let used_quote= $_enclosing_char
 | |
| 
 | |
|   perl;
 | |
|     my $out= $ENV{'full_output_filename'};
 | |
|     my $to_replace= $ENV{'to_replace'};
 | |
|     my $quote= $ENV{'used_quote'};
 | |
| 
 | |
|     $to_replace =~ s/$quote/$quote$quote/g;
 | |
| 
 | |
|     open(FILE, ">", $out) or die "Error $? opening $output_filename: $!";
 | |
|     print FILE $to_replace or die "Error $? writing to $output_filename: $!";
 | |
|     close FILE or die "Error $? closing $output_filename: $!";
 | |
|     chmod 0777, $out;
 | |
|   EOF
 | |
| 
 | |
|   --let $escape_string= `SELECT LOAD_FILE('$_output_filename')`
 | |
| }
 | |
| # Cleanup
 | |
| --remove_file $_output_filename
 |