When I try to below code it give me a warning
mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables
$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');
$type = "ss";
$param = array("Maq","bool");
$params[] = &$type;
$params[] = &$param;
call_user_func_array( array($stmt, 'bind_param'), $params );
I really don't know why its happening I read a lot of same title questions in Stack Overflow but some has comma separated types or need more type but in my case I think its proper but why I am keep getting warnings?
This is a late answer, I hope will help someone.
It's a part of my mysqliLayer class, so I extracted needed variables.
// establish mysqli connection
$conn = new mysqli(.....);
$tableName = 'users';
// Types to bind
$type = 'isss';
$fields = ['id','name', 'email', 'created'];
$values = [1, 'angel', '[email protected]', '2018-1-12'];
$sql = "INSERT INTO " . $tableName . " (" . join(',', $fields) . ") VALUES (?,?,?,?)";
$stmt = $conn->prepare($sql);
// Using ...token introduced in php v.5.6 instead of call_user_func_array
// This way references can be omitted, like for each value in array
$stmt->bind_param($type, ...$values);
$stmt->execute();
$stmt->close();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With