I've created (with help from some code from the site) a function to make
strings or arrays mysql safe. It works just fine, assuming you pass your
variables by reference ( sqlSafe(&$var) ), but I get this error every time
it is used:

[error] PHP Warning:  Call-time pass-by-reference has been deprecated -
argument passed by value;  If you would like to pass it by reference, modify
the declaration of [runtime function name]().  If you would like to enable
call-time pass-by-reference, you can set allow_call_time_pass_reference to
true in your INI file.  However, future versions may not support this any
longer.  in file.php on line X

I want the function to be able to accept as many variables as needed to make
them sqlsafe (10 is enough for now), and to remove that annoying error, I'd
also like to not need to pass them by reference. Is this possible?? and if
so, how?? I know it is possible to add the & before each function parameter,
but then I can't pass more or less variables than I put in the function
definition, cause you can't have default values for a reference parameter
(go figure), and it'll also complain if you give it too few variables.

function sqlSafe( $a0,
     $a1=NULL,
     $a2=NULL,
     $a3=NULL,
     $a4=NULL,
     $a5=NULL,
     $a6=NULL,
     $a7=NULL,
     $a8=NULL,
     $a9=NULL){
 if(func_num_args()>10)
  echo "<h1>Too Many Args in sqlSafe</h1>";
 for($i=0;$i<func_num_args();$i++){
  $name="a" . $i;
  if(!isset($$name)) continue;
  if(is_array($$name)){
   foreach($$name as $n => $v){
    if(is_array($v))
     sqlSafe(&${$name}[$n]);
    elseif(isset($v))
     ${$name}[$n] = mysql_escape_string ($v);
   }
  }else
   $$name = mysql_escape_string ($$name);
 }
}



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to