2

Is it possible to use bind_param() with arrays?

For example

$stmt->bind_param('iss', Array(101, 'SomeString 1', 'Some string 2'));
// OR
$stmt->bind_param(Array('iss'), Array(101, 'String1', 'String2'));
// OR
$stmt->bind_param(Array( Array('i', 101), Array('s', 'String1'), Array('s', 'String2') ));

Is any of these examples possible in PHP (or any other examples)?

Finally I can use my function/class

$sql->upload( $table, Array('n;id', 's;username=' . $username, 's;password=' . $password) );

Function explination

public function upload( String $table , Array $values )

// Where example array could be Array('s;column=someString', 'i;SomeIntegerColumn=10', 'n;SomeID')
/*
    identifier;column=value
    Basically where identifier can be "n", "d", "i" or "s"
    column is the name of the sql column to inset the value to
    value is the string/integer/double to instert in the the column

    Example query with the array mentioned above would be
    "INSERT INTO $table(column, SomeIntegerColumn, SomeID) VALUES(?, ?, NULL)"
*/

My project will be out on GitHub really soon :) Thanks a lot!

marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
  • 1
    I do not believe any of those are possible. But could be wrong. Try them and see? – Jonnix Nov 21 '16 at 10:13
  • Thanks for the help @YourCommonSense, an edit has now been made to explain why i needed this to work with arrays –  Nov 21 '16 at 15:22

2 Answers2

10

If your PHP is not outdated (>= 5.6 namely), just add three dots to the first example,

$stmt->bind_param('iss', ...array(101, 'SomeString 1', 'Some string 2'));
Your Common Sense
  • 156,878
  • 40
  • 214
  • 345
-1

Actually you can do even better, if you have an array, {'user' => 'John', 'age' => '20'}, and in your statement you put the parameters with the same name, :name, :age, you can pass this array as a parameter in the execute method, an it will bind perfectly