Saya tidak mengerti cara apa yang sudah Anda coba, tetapi saya akan mencoba menjawab:
menurut bind_param manual
:
argumen pertama bind_param
adalah string , seperti 'ssss'
.
argumen kedua dan lainnya - adalah nilai yang akan dimasukkan ke dalam kueri.
Jadi, $a_params
your Anda larik harus tidak
0:"New Zealand"
1:"Grey Lynn"
2:"Auckland"
3:"Auckland"
4:array(4)
0:"s"
1:"s"
2:"s"
3:"s"
Tapi:
0:"ssss"
1:"New Zealand"
2:"Grey Lynn"
3:"Auckland"
4:"Auckland"
Melihat? Semua nilai adalah string. Dan tipe placeholder adalah yang pertama.
Pertimbangkan juga urutan argumen di $a_params
harus sama dengan urutan parameter di bind_param
. Ini berarti bahwa, yaitu, $a_params
seperti
0:"New Zealand"
1:"Grey Lynn"
2:"Auckland"
3:"Auckland"
4:"ssss"
salah. Karena elemen pertama $a_params
akan menjadi argumen pertama bind_param
dan dalam hal ini bukan "ssss"
string.
Jadi, ini berarti setelah Anda mengisi $a_params
dengan nilai, string placeholder harus ditambahkan ke awal $a_params
, dengan array_unshift
misalnya:
// make $a_param_type a string
$str_param_type = implode('', $a_param_type);
// add this string as a first element of array
array_unshift($a_params, $str_param_type);
// try to call
call_user_func_array(array($stmt, 'bind_param'), $a_params);
Jika ini tidak berhasil, Anda dapat merujuk ke bagian dari jawaban yang Anda berikan
, di mana nilai $a_params
diteruskan dengan referensi ke array lain $tmp
, dalam kasus Anda, Anda dapat mencoba sesuatu seperti:
// make $a_param_type a string
$str_param_type = implode('', $a_param_type);
// add this string as a first element of array
array_unshift($a_params, $str_param_type);
$tmp = array();
foreach ($a_params as $key => $value) {
// each value of tmp is a reference to `$a_params` values
$tmp[$key] = &$a_params[$key];
}
// try to call, note - with $tmp, not with $a_params
call_user_func_array(array($stmt, 'bind_param'), $tmp);