Yes, you are correct. Have been playing with and reading up on this over the past 2 weeks.
mysqli_stmt_bind_param() is usually all you need however, there was a requirement to update different fields depending on a user type. Therefore,
call_user_func_array( array($stmt, 'bind_param'), $bind_params); allowed me to dynamically assign the parameters depending on who was updating (and therefore, which fields were being updated.)
I obviously copied and pasted this code and re-purposed without fully understanding what it was doing.
For 99% of cases all that is required is:
if ( $stmt = mysqli_prepare($this->mysqli, $query) ) :
$customer_id = $this->customer["id"];
$invoice_no = $dataArrayRow['Invoice No'];
$sale_type_desc = $dataArrayRow['Sale Type Desc'];
$file_date = $this->fileGeneratedDate->format('Y-m-d H:i:s');
mysqli_stmt_bind_param('isss', $customer_id, $invoice_no, $sale_type_desc, $file_date);
// Execute the statement
if ( !mysqli_stmt_execute( $stmt ) ) :