PHP - MySQL 准备好的语句来插入数组[重复]

2023-12-10

我正在编辑一个使用 MySQLi 的脚本。我需要使用准备好的语句将一些值插入数据库。

我的数组的形式为:

$insert = array('column1' => 'value1', 'column2' => 'value2', 'column3' => 'value3')

到目前为止我已经有了,但我需要帮助bind_param部分。我在这里看过文档call_user_func_array已使用,但我不确定如何实现它。

$cols = array_keys($insert);
$query = "INSERT IGNORE INTO results (". implode(", ", $cols) .") VALUES (". implode(', ', array_fill(0, count($insert), '?')) .")";
$stmt = $mysqli->prepare($query);
$param = array_merge(array(str_repeat('s', count($insert))), array_values($insert)); 
call_user_func_array(array($stmt, 'bind_param'), $param); 
$stmt->execute();

PHP 5.4.17


不...这绝对比任何数组的 PDO 更难,因为mysqli_stmt_bind_param()有效...并且通过改变可以很好地工作$array删除/添加其他列的数据。

$mysqli = new mysqli('localhost', 'root', 'password', 'test');

$array  = array("name"=>"pineapple", "color"=>"purple"); 

$table_name = "fruit"; 



insert_data($mysqli, $array, $table_name);



function insert_data($mysqli, $array, $table_name) 
{
   $placeholders = array_fill(0, count($array), '?');

   $keys   = array(); 
   $values = array();
   foreach($array as $k => $v) {
      $keys[] = $k;
      $values[] = !empty($v) ? $v : null;
   }

   $query = "insert into $table_name ".
            '('.implode(', ', $keys).') values '.
            '('.implode(', ', $placeholders).'); '; 
   // insert into fruit (name, color) values (?, ?);    

   $stmt = $mysqli->prepare($query);

   // create a by reference array... 
   $params = array(); 
   foreach ($array as &$value) { 
      $params[] = &$value;
   }
   $types  = array(str_repeat('s', count($params))); 
   $values = array_merge($types, $params); 

   /*           
   $values = Array
      (
          [0] => ss
          [1] => pineapple
          [2] => purple
      ) 
   */

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

   $success = $stmt->execute();

   if ($success) { print "it worked..."; } 
           else { print "it did not work..."; }
}  

我从这些帖子中得到了一些帮助:
- https://stackoverflow.com/a/15933696/623952
- https://stackoverflow.com/a/6179049/623952


所以……在$stmt->bind_param()第一个参数是一个字符串,每个传入的参数都有一个字符。该字符代表参数的数据类型。在上面的例子中,两个参数都是字符串,所以就变成了ss。上面的示例中也始终假定有一个字符串。

我在以下位置找到了这张图表bind_param()文档:

types
包含一个或多个字符的字符串,用于指定相应绑定变量的类型:

Type specification chars  

Character    Description  
i            corresponding variable has type integer
d            corresponding variable has type double
s            corresponding variable has type string
b            corresponding variable is a blob and will be sent in packets
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - MySQL 准备好的语句来插入数组[重复] 的相关文章

  • 如何在 Laravel 5.5 中编辑“页面因不活动而已过期”的视图

    在 Laravel 5 5 中 当您使用 CSRF 保护 默认情况下 并且在长时间不活动后发送发布请求时 您将收到此错误页面 屏幕截图 我对此错误表示同意 但是 我需要更改此错误的视图 文本以确保与我的应用程序风格和语言相匹配 关于如何编辑
  • 如何从 Laravel 5 中的 Public/Images 文件夹中删除图像(URL 数据)

    如何从 laravel 5 中的 public images 文件夹中删除图像文件 我从这个网站找到了一些例子 但我知道他们只是在他们的文件中使用文件名record table 但我正在使用类似的东西URL e g localhost pr
  • Symfony php.ini Debian

    我在 Oracle VM VirtualBox 上使用 Debian 7 amd64 LAMP 服务器 我正在尝试安装 Symfony 但遇到了一些小问题 当我运行命令时 php my project name app check php
  • 从 .frm 文件恢复 mysql 数据库

    我每周都会倾倒所有桌子以获得备份 但后来我明白它只是存储表的 frm文件 它不显示表的 MYD 和 MYI 文件 所以我只有我的数据库的 frm 文件 而且我的数据库是innodb 那么我可以用数据库中的数据获取我的数据库吗 是的 这是可能
  • Mysql - 如何比较两个 Json 对象?

    将整个 MySql json 列与 json 对象进行比较的语法是什么 以下不起作用 select count criteria from my alerts where criteria industries 1 locations 1
  • PSR-4 代码库中条令生成器的解决方法

    在 Windows 机器上使用 Symfony 2 和 Doctrine 我正在尝试 从现有模式生成实体 php app console doctrine mapping import force CoreBundle annotation
  • 如何从字符串中只获取数字? [复制]

    这个问题在这里已经有答案了 我有这样的字符串 第 001 课 完成 在这种情况下 我只想获取数字部分001 我试过这个 str the title preg match all d str matches number implode ma
  • 如何让MySQL数据库完全在内存中运行?

    我注意到我的数据库服务器支持内存数据库引擎 我想让一个已经运行 InnoDB 的数据库完全在内存中运行以提高性能 我怎么做 我探索了 PHPMyAdmin 但找不到 更改引擎 功能 假设您了解注释中提到的使用 MEMORY 引擎的后果 并且
  • WHERE 子句或 ON 子句中的 INNER JOIN 条件?

    我今天输错了一个查询 但它仍然有效并给出了预期的结果 我的意思是运行这个查询 SELECT e id FROM employees e JOIN users u ON u email e email WHERE u id 139840 但我
  • 如何在javascript中使用自动递增id?

  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • Propel Query 中的动态表名称

    我想知道您是否可以使 propel 查询的表名称动态化 有点像变量 一个例子类似于 DynamicVar Query create 我让它在 ifs 中工作 就像下面的例子一样 但如果更动态地制作 可以删除相当多的行 这些表的设置都是相同的
  • CSV 从 UTF8 到 ISO-8859-1

    我正在尝试修改我的 CSV 导出 但它不会将我的 CSV 从 UTF 8 转换 保存为 ISO 8859 1 请问我做错了什么吗 实际上自从修改了这个之后 我得到了一个空的 CSV 文件 php 7 0 x function my Gene
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • 在无文本搜索查询中使用 sphinx 与 MySQL

    我有这样的疑问 假设我有一个大表 与一个较小的用户表有关系 这个想法是在那个真正的大表中搜索大于给定日期的日期并按分数 例如大整数 排序 并同时获取相关的用户信息 此查询的结果大约每 10 分钟就会更改一次 所以 没有文本搜索 但我有一个非
  • 如何获取mysql中一条记录的大小

    如果表包含 TEXT 或 BLOB 类型的字段 如何获取 MySql 中记录的大小 是否可以使用sql语句获取记录或表的大小 要计算字符串或 blob 的大小 以字节为单位 请使用LENGTH YourColumn http dev mys
  • 从外部 bash 设置环境变量

    我试图使用 PHP 从命令行 设置 bash 环境变量 但没有成功 buff array buff VARTESTKEY VARTESTVALUE buff export VARTESTKEY file put contents scrip
  • sqlsrv_num_rows 不返回任何值

    我正在尝试获取查询中返回的行数 while 循环遍历结果有效 但由于某种原因 sqlsrv num rows 不返回任何值 result SELECT from dtable WHERE id2 apple query sqlsrv que
  • PHP 除法浮点值问题

    当我尝试获取余数时 它给出了无效值 我试图获得两位小数的余数 我得到 3 4694469519536E 18 我的价值观是 x 0 1 y 0 005 我尝试了以下方法 echo ed fmod 0 1 0 005 OutPut 3 469
  • 哪个 PHP 5 版本最常用?

    当我开发将在不同配置的客户端 Web 服务 通常使用共享托管 上使用的应用程序时 我应该假设大多数 Web 服务器都具有哪个 PHP 5 版本 例如 5 2 x 5 3 x 等 在所有使用 PHP 版本 5 的网站中 有 84 9 使用版本

随机推荐

  • Node.js MongoDB collection.find().toArray 不返回任何内容[重复]

    这个问题在这里已经有答案了 虽然我发现了与我类似的问题 但我无法自己解决问题 在我的 models user 模型中 我想找到所有用户并将它们放入数组中 然后将该数组返回到控制器 我将在其中使用信息 这是我的代码 var mongoData
  • 在 React Native 中从 Firebase 数据库/存储加载并返回图像

    我有一个 Firebase 应用程序设置 其中包含实时数据库中的一系列项目 每个项目都有一个imagePath节点 包含 Firebase 存储 URI 例如 gs bucket images stars jpg 项目数组用于
  • JPanel 上的 KeyListener 随机无响应

    我的项目中的默认 Java KeyListener 遇到问题 我注意到 当我启动时 KeyListener 有时似乎没有转发 KeyEvents 问题症状 启动应用程序时 不处理按键输入 这只是有时发生 有时我必须关闭并启动应用程序 7 8
  • 如何使用 Javascript 动态更改缩放级别?

    我正在尝试找出如何重置 ios 网页中的缩放级别 似乎当用户进行捏放大 缩小时 缩放功能不再起作用 我想要捏合手势 但想以编程方式重置缩放 有人有关于使用 Javascript jQuery 动态改变缩放的想法吗 document read
  • Jenkins 在 Linux 或 Windows 上运行 Maven 构建

    我有一个 Java 应用程序的 Maven 构建 通过键入相同的命令可以在 Linux 或 Windows 上成功运行mvn install 然而 使用Jenkinsfile方法设置此版本时 在 Linux 上该文件需要包含sh mvn i
  • Appcelerator 和 CommonJS 模块(缓存和循环引用)

    事情是这样的 我正在使用 CommonJS 方式使我的移动 iPhone Android 应用程序模块化 这并不奇怪 但有一件事我就是无法理解 CommonJS 允许我创建 STATIC 私有变量 这让我可以轻松创建单例 我认为至少这是因为
  • 将数组传递给函数:数组必须具有“Sized”类型

    我构建了一个像这样的数组的数组 let mut my array false WIDTH HEIGHT where WIDTH and HEIGHT是先前定义的常量 我想将整个数组传递给函数 并更改数组中的值 尽管不是数组的大小 长度 我试
  • 使用 spring-test-mvc jsonpath 测试返回 null

    我正在使用 Spring 的 spring test mvc 库来测试 Web 控制器 我有一个非常简单的控制器 它返回一个 JSON 数组 然后在我的测试中我有 Test public void shouldGetAllUsersAsJs
  • PySpark 当列表中的项目时

    以下是我想要实现的操作 types 200 300 def Count ID cnd F when F col type in types 1 otherwise F lit 0 return F sum cnd alias CountTy
  • 查找与多个表的匹配项:使用 data.table 进行条件(完全)联接

    这可能有一个简单的解决方案 但我似乎无法破解它 例如 假设我有一个列出购买和客户详细信息的表 library data table purchase lt setDT structure list Name c John John Mary
  • C 程序返回码和 && bash 符号?

    在bash中 我们可以使用 运算符来执行两个命令 例如 foo bar 会先执行foo 并且只有当 foo 成功 时 它才会执行bar 然而 当您考虑到 C 程序按照惯例返回 0 或exit 0 成功完成后 这与直觉的行为相反 操作员 因为
  • EF Core .net 6 Cosmos 迁移问题

    NET6 EFCore 和 Cosmos 迁移问题 需要一些帮助 大家好 我是 Net 世界的新手 我面临着 Google 未能帮助我解决的问题 你是我最后的问候 所以 我正在尝试使用 EF Core 6 0 3 从我的小型家庭控制中心项目
  • 用 cobol 计算变量的长度字符串

    我在数据库表中有一个注释 我如何计算该字符串的长度 我有一个变量定义如下 10 NOTE 49 NOTE LEN PIC S9 4 USAGE COMP 49 NOTE TEXT PIC X 500 Note 是一个 500 个字符的字符串
  • Google App Engine 可以用于大规模并行计算吗?

    大约在 2011 年 3 月 我测试了 GAE Java 版本 作为大规模并行计算的潜在平台 该日期是相关的 因为 GAE 一直在发展 我发现该应用程序的计算吞吐量实际上被限制在大约 43 2 倍 有人成功地使用 GAE 进行大规模并行计算
  • Spark DataFrame write方法写入许多小文件

    我有一项相当简单的工作 将日志文件转换为镶木地板 它正在处理 1 1TB 的数据 分成 64MB 128MB 文件 我们的块大小为 128MB 大约有 12000 个文件 工作工作如下 val events spark sparkConte
  • 捕获应用程序崩溃事件

    我在VB Net中做了一个应用程序 但有些用户在启动时会遇到崩溃问题 这就是 一个问题导致该程序无法正常工作 只需一个按钮 关闭程序 由于应用程序加载时会发生很多事情 是否有可能知道导致问题的原因 如果您的项目属性中启用了 应用程序框架 请
  • TimePickerDialog 取消按钮

    我有一个活动 TimePickerActivity 它创建一个 TimePickerDialog 我有一个 onTimeSetListener 它响应 设置 按钮 最后调用 finish 并返回到调用 TimePickerActivity
  • IntelliJ Spring Boot 项目无法使用 Thymeleaf 找到我的 CSS 文件

    我是 Spring Boot 新手 我的问题是我有 Spring Boot 项目 我打算使用 Thymeleaf 查看我的 HTML 页面 但 Spring 无法解析我的 JavaScript 和 CSS 文件 Full picture o
  • javascript 上下文问题 - 参数未定义

    我有这个代码 targetMu function programmeCode muId Parameter values are fine here targetMuController targetMuView on targetMu a
  • PHP - MySQL 准备好的语句来插入数组[重复]

    这个问题在这里已经有答案了 我正在编辑一个使用 MySQLi 的脚本 我需要使用准备好的语句将一些值插入数据库 我的数组的形式为 insert array column1 gt value1 column2 gt value2 column