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!

2
  • 1
    I do not believe any of those are possible. But could be wrong. Try them and see? Commented Nov 21, 2016 at 10:13
  • Thanks for the help @YourCommonSense, an edit has now been made to explain why i needed this to work with arrays Commented Nov 21, 2016 at 15:22

2 Answers 2

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'));
Sign up to request clarification or add additional context in comments.

8 Comments

I will have a try
Can I do $stmt->bind_param($identifiers, ...$array);
You just said you'll have a try. Did you?
Not yet, I'll try now
@ringø no wonder as this syntax has nothing to do with bind_param, as it's an all language feature, argument unpacking operator
|
-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

2 Comments

@RichardOlsenSandberg why do you think it won't work for PDO?
Cause { and } is not Arrays, most likely Objects, but never got them to work as objects either

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.