2021年3月27日星期六

PHP access array of variables as separated variables

I tried to write a class and method for select rows by the prepared statement.

I stuck in an interesting problem.

I can't assign an array of variables like $variables = [$var1, $var2, $var3]; to a function and use them separetely like my_function($var1, $var2, $var3); so I can have my_function($variables) is this possible? notice that, my_function won't accept an array.

in my code:

so when I run this:

$query = "SELECT * FROM books as b where b.id=?";  $result = Query::select($query, 'i', 1);  

or when I run this:

$query = "SELECT * FROM books as b where b.id=? b.name=?";  $name = 'Sam';  $result = Query::select($query, 'is', 1,$name);  

this method will execute:

public static function select($query, $string_of_types, ...$variables)      {          $mysql = new Mysqli(DB::$servername, DB::$username, DB::$password, DB::$databasename);          $stmt = $mysql->prepare($query);            ///////start mess up//////          if(count($variables) == 1)              $stmt->bind_param($string_of_types, $variables[0]);          if(count($variables) == 2)              $stmt->bind_param($string_of_types, $variables[0], $variables[1]);          if(count($variables) == 3)              $stmt->bind_param($string_of_types, $variables[0], $variables[1], $variables[2]);                              $stmt->execute();          $result = $stmt->get_result();          return $result;      }  

and it's working but I know I'm on the wrong foot.

how can I fix this mess up?

if I somehow magically, remove the [] around $variables, so everything will work fine. so I can write $stmt->bind_param($string_of_types, $variables);

https://stackoverflow.com/questions/66837988/php-access-array-of-variables-as-separated-variables March 28, 2021 at 10:53AM

没有评论:

发表评论