PHP 5.5,无法让 call_user_func_array 与 bing_param 一起工作

标签 php mysql mysqli prepared-statement call-user-func-array

我的 PHP 版本为 5.5.9-1,在使用 stmt 的 call_user_func_array 和 bind_param 时遇到了问题。我有以下代码

$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 with call_user_func_array warnings 中的代码但还是不行

最佳答案

我有一个类似的问题(我只是不记得到底是什么问题),我已经使用 ReflectionMethod 解决了这种情况。 .

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

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

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

$statement->execute();

上面的代码来自simple study case我自己的。在 Debian Jessie 上使用 PHP 5.5 创建并使用 PHP 7(很久以前......)进行测试。

毕竟,您的代码应该也能正常工作。通过反射,此代码与您的代码执行相同的操作。

Ps.:正如您在下面的评论中看到的,它比 call_user_func_array 慢,应该在生产中避免使用。

关于PHP 5.5,无法让 call_user_func_array 与 bing_param 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46788530/

相关文章:

php - 停止重复插入

php - 如何将数组转换为逗号分隔的单词字符串?

php curl 多个cookie

php - 从 Ajax POST 将数组保存到 MySQL 的正确方法

php - 删除后 MySQL 查询变慢

c# - 如何使用 C# 从客户端访问 MySQL 数据库

php - 在字符串中搜索一个词并用不同的链接替换该词 php

PHP/MySQL 注册 -- 我是新手

php - MySQL函数查询期望参数1为字符串

php - 我在数据库上的PHP代码在Xampp v3.2.2上不起作用?