Jeg forstår ikke, hvilke måder du har prøvet, men jeg vil prøve at svare:
ifølge bind_param manual
:
første argument for bind_param
er en streng , som 'ssss'
.
andet og andre argumenter - er værdier, der skal indsættes i en forespørgsel.
Så din $a_params
array skal ikke være
0:"New Zealand"
1:"Grey Lynn"
2:"Auckland"
3:"Auckland"
4:array(4)
0:"s"
1:"s"
2:"s"
3:"s"
Men:
0:"ssss"
1:"New Zealand"
2:"Grey Lynn"
3:"Auckland"
4:"Auckland"
Se? Alle værdier er strenge. Og pladsholdertyper er den første.
Tag også hensyn til rækkefølgen af argumenter i $a_params
skal være den samme som rækkefølgen af parametre i bind_param
. Dette betyder, dvs. $a_params
synes godt om
0:"New Zealand"
1:"Grey Lynn"
2:"Auckland"
3:"Auckland"
4:"ssss"
er forkert. Fordi det første element i $a_params
vil være det første argument for bind_param
og i dette tilfælde er det ikke en "ssss"
streng.
Så det betyder, at efter du har udfyldt $a_params
med værdier skal pladsholdernes streng tilføjes til begyndelsen af $a_params
, med array_unshift
for eksempel:
// 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);
Hvis dette ikke virkede, kan du henvise til en del af svaret, du har givet
, hvor værdierne for $a_params
sendes med henvisning til et andet array $tmp
, i dit tilfælde kan du prøve noget som:
// 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);