php - mysqli bind_param 中的动态变量绑定(bind)

标签 php mysqli

当我尝试低于代码时,它会给我一个警告

mysqli_stmt::bind_param(): Number of elements in type definition string doesn't match number of bind variables

$stmt = $mysqli->prepare('SELECT * FROM users WHERE lname = ? AND fname = ?');
    $type = "ss";
    $param = array("Maq","bool");
    $params[] = &$type;
    $params[] = &$param;

    call_user_func_array( array($stmt, 'bind_param'), $params );

我真的不知道为什么会发生这种情况 我在 Stack Overflow 中阅读了很多相同标题的问题,但有些问题使用逗号分隔类型或需要更多类型,但就我而言,我认为它是正确的,但为什么我不断收到警告?

最佳答案

这是一个迟到的答案,我希望能帮助别人。

它是我的 mysqliLayer 类的一部分,因此我提取了所需的变量。

// establish mysqli connection
$conn = new mysqli(.....); 
$tableName = 'users';
// Types to bind
$type = 'isss';
$fields = ['id','name', 'email', 'created'];
$values = [1, 'angel', 'email@test.com', '2018-1-12'];

$sql = "INSERT INTO " . $tableName . " (" . join(',', $fields) . ") VALUES (?,?,?,?)";

$stmt = $conn->prepare($sql);
// Using ...token introduced in php v.5.6 instead of call_user_func_array
// This way references can be omitted, like for each value in array
$stmt->bind_param($type, ...$values);

$stmt->execute();

$stmt->close();

关于php - mysqli bind_param 中的动态变量绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27961401/

相关文章:

php - PHP脚本套接字保持连接状态

php - 我想创建简单投票而不点击按钮,但它不起作用

php - 简体中文字符显示为问号菱形

php - 如何在我的管理页面中显示数据库

php - 使用准备好的语句编写查询后对结果集进行分页,

php - 显示图像变量

php - 验证没有表的模型中的字段 (CakePHP)

javascript - 如何将html代码转换为php

php - 检查 MySQL 列是否包含字符

php - Swift 2.0 - 将 JSON 值从 swift 存储到 php 变量并使用 php echo 显示