mysql — PHP 5.5, невозможно заставить call_user_func_array работать с bing_param

У меня PHP версии 5.5.9-1 и у меня проблемы с call_user_func_array и bind_param для stmt. У меня есть следующий код

$query = "SELECT * FROM studentTable WHERE firstname = ?";
if(!($stmt = $conn->prepare($query))){
echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
return;
}
$paramType= 's';
$paramValue= 'bob';
$a_params = array(&$paramType, &$paramValue);
call_user_func_array(array($stmt, 'bind_param'),$a_params)

Я получаю следующую ошибку и не знаю почему

Binding parameters failed: (0)

Я попытался обернуть строки «s», но это говорит о том, что не хватает аргументов. Что я делаю неправильно?

Спасибо

ОБНОВИТЬ

Я пробовал код из php5.3 — mysqli_stmt: bind_params с предупреждениями call_user_func_array но все еще не работает

1

Решение

У меня была похожая проблема (я просто не помню точно, какая это была проблема), я решил эту ситуацию, используя ReflectionMethod.

$type = 's';
$parameter = 'bob';

$values = [$type , &$parameter];

$reflectionMethod = new \ReflectionMethod($statement , 'bind_param');
$reflectionMethod->invokeArgs($statement , $values);

$statement->execute();

Код выше взят из простой учебный пример мой собственный. Создан на PHP 5.5 и протестирован с PHP 7 (давно …) на Debian Jessie.

В конце концов, ваш код также должен работать. С отражением, этот код делает то же самое, что и ваш код.

Ps .: как вы можете прочитать в комментариях ниже, это медленнее, чем call_user_func_array и его следует избегать в производстве.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]