首页 > 解决方案 > 如何将单个字符串变量或数组绑定到 mysqli 插入语句

问题描述

这是我正在尝试运行的插入语句

$stmt = $conn->prepare("INSERT INTO styles1 ($names) VALUES ($placeholders)");
    $stmt->bind_param($dataTypes, $values);
    $stmt-execute();

但我收到“类型定义字符串中的元素数与绑定变量数不匹配”错误,即使它们匹配。我假设 bind_param() 需要 8 个变量用于 8 个占位符,但如果我可以只使用一个会更有用。每个变量都是一串数据,如下所示:

$names = width, height, color, depth, posX, posY, rotate, corners
$values = 56, 35, green, 4, 52, 24, 345, 64
$placeholders = ?, ?, ?, ?, ?, ?, ?, ?
$dataTypes = "ssssssss"

PDO 会是更好的选择吗?

标签: phpmysqlipdoprepared-statement

解决方案


您可以使用 splat ( ... ) 运算符传入变量数组,PHP 会将它们展开为函数调用的单独值。

首先确保您的数组定义正确...

$values = [56, 35, "green", 4, 52, 24, 345, 64];

接着

$stmt->bind_param($dataTypes, ...$values);

推荐阅读