php - 如何将单个字符串变量或数组绑定到 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 会是更好的选择吗?
解决方案
您可以使用 splat ( ... ) 运算符传入变量数组,PHP 会将它们展开为函数调用的单独值。
首先确保您的数组定义正确...
$values = [56, 35, "green", 4, 52, 24, 345, 64];
接着
$stmt->bind_param($dataTypes, ...$values);
推荐阅读
- google-bigquery - 如何在 Airflow 中使用 BigQueryInsertJobOperator 传递变量
- python - Python将一个文件的内容复制到另一个目录中的另一个文件中
- sql - ActiveRecord/Postgres - 在数组字段中查找所有具有空值的实体
- c# - 使用递归将自下而上的数据修改为自上而下
- python - 如何打印有很多撇号的东西?
- c# - 使用 Github Authorize Loop 登录
- javascript - TypeScript 诊断(使用 `[jest-config].globals.ts-jest.diagnostics` 选项自定义):
- etcd - 恐慌:未能解组租赁原型项目错误
- java - 如何在 MSSQL 数据库上使用 JPA 对非 id 列使用自动增量?
- javascript - 如何将Javascript添加到角度html?