php pdo多数组插入

2023-12-01

我已经玩了几个小时并试图解决这个问题,但看起来很难解决。

我能够进行单个数组插入

$person = array('name' => 'Wendy', 'age' => '32');

但如果我想要多个这样的:

$person = array(array('name'=>'Dan', 'age'=>'30'), array('name' => 'John', 'age' => '25'), array('name' => 'Wendy', 'age' => '32'));

不起作用?任何帮助,将不胜感激。

对于多次插入:

public function insertPdo($table, $data){
    try{
        if (!is_array($data) || !count($data)) return false;

        $bind = ':' . implode(', :', array_keys($data));      
        $sql = 'INSERT INTO ' . $table . ' (' . implode(', ',array_keys($data)) . ') ' . 'values (' . $bind . ')';

        $sth = $this->__dbh->prepare($sql);
        $result = $sth->execute($data);

    }
    catch(PDOException $e){
        echo $e->getMessage();
    }
}

单次插入用

$person = array('name'=>'Dan', 'age'=>'30');
$db->insertPdo('test_pdo',$person);

// For Multi Insertion, I'm trying to use this in above function
foreach ($data as $row) {
    $result = $sth->execute($row);
};

$person = array(array('name'=>'Dan', 'age'=>'30'), array('name' => 'John', 'age' => '25'), array('name' => 'Wendy', 'age' => '32'));
$db->insertPdo('test_pdo',$person);

和错误:

错误:SQLSTATE[HY093]:参数编号无效:绑定变量的数量与标记的数量不匹配


为了利用MySQL中多次插入的插入速度(http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html),您可以使用准备好的语句来构建更大的查询。与更具迭代性的方法相比,这确实增加了复杂性,因此可能仅对于高需求系统或大型数据集才值得。

如果您拥有上述建议的数据:

$person = array(array('name'=>'Dan', 'age'=>'30'), array('name' =>
'John', 'age' => '25'), array('name' => 'Wendy', 'age' => '32'));

我们希望生成一个如下所示的查询:

insert into table (name, age) values (?,?), (?,?), (?,?);

要将其整合在一起,您需要的东西与此不完全不同:

$pdo->beginTransaction() // also helps speed up your inserts
$insert_values = array();
foreach($person as $p){
   $question_marks[] = '(?,?)';
   $insert_values = array_merge($insert_values, array_values($p));
}

$sql = "INSERT INTO table_name (name, age) VALUES " . implode(',', $question_marks);

$stmt = $pdo->prepare ($sql);
try {
    $stmt->execute($insert_values);
} catch (PDOException $e){
    // Do something smart about it...
}
$pdo->commit();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php pdo多数组插入 的相关文章

  • PHP - 获取base64图像字符串解码并保存为jpg(生成空图像)

    嗨 我实际上是通过 ajax 发送一个 base64 图像字符串到一个 php 脚本 该脚本只是解码字符串并将内容保存为 jpg 文件 但结果是一张空图像 这怎么可能 PHP脚本 uploadedPhotos array photo 1 p
  • 从 octobercms 中的非 ajax 表单获取输入值

    我正在尝试构建一个简单的搜索功能 下面是我的搜索表格
  • 如何在 Microsoft 报告中显示字节数组中的图像

    我使用报表文件和 ReportViewer 控件来显示在运行时从对象动态加载数据的报表 我需要显示一个以字节数组形式存储在对象中的图像 PictureBox 的值当前设置为 First Fields ImageData Value dtst
  • 如何将 HTML 转换为 Markdown?

    我有一个类似 stackoverflow 的网站 有一个文本区域 人们可以在其中写答案 我用这个 PHP 库 http parsedown org 转换降价 我的意思是我使用该函数来转换 italic to i italic i inclu
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 通过 facebook graph API 检索 facebook 用户的邮政编码

    我正在尝试使用 facebook graph API 检索用户的邮政编码 我正在使用以下代码 代码在php ini中 facebook new Facebook array appId gt APP ID secret gt APP SEC
  • 在哪里可以找到 Java 数组的源代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以找到java数组的源代码 Example double arr new double 20
  • 使用php将数据存储到文本文件中?

    我正在尝试将数据存储在文本文件中 例如使用 php 将数组存储到文本文件中 而不是存储到 mysql 数据库中 例如 这里是要存储在文本文件中的数据 name gt john age gt 25 location gt australia
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • WordPress 插件中的类自动加载器

    我想编写一个类自动加载器以在 WordPress 插件中使用 该插件将安装在多个站点上 我想尽量减少与其他插件发生冲突的机会 自动加载器将是这样的 function autoload name some code here 我的主要问题是
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • 如何在 Zend Framework 3 中注册自定义表单视图助手

    我正在将继承的 Zend Framework 2 应用程序迁移到 Zend Framework 3 并且在注册自定义表单视图助手时遇到了一些困难 这些助手在应用程序使用版本 2 时起作用 主要用于添加标签属性以实现可访问性 例如 这是一个自
  • 从 PHP 数组生成 HTML 表

    我不明白这一点 我需要解决看似简单的问题 但这超出了我的逻辑 我需要编写一个函数 table columns input cols 它将输出一个表 示例 input array apple orange monkey potato chee
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV

随机推荐

  • 将带有标题的 HTML 表转换为 Json - Python

    假设我有以下 HTML 表 table tr th Name th th Age th th License th th Amount th tr tr td John td td 28 td td Y td td 12 30 td tr
  • pandoc lua 过滤器替换 tex 宏

    我正在尝试编写一个 pandoc lua 过滤器来替换乳胶包 mhchem 中的 ce 命令 这是我尝试的示例 ce NO3 但它不起作用并在 rtf 输出文件中呈现空白 return Str function elem if elem t
  • 如何以 root 身份运行 Perl 脚本但仍然影响用户 gconf 设置

    新问题 我正在尝试制作一个统一的脚本 根据我的喜好初始化新的 Ubuntu 安装 它必须在 sudo 下运行才能安装软件包 但使用 gconftool 2 影响 gconf 设置依赖于未处理的 dbus 会话通过简单地在脚本中更改 UID
  • 使用 Botframework 进行 OAuth 时的神奇代码。有办法吗?

    登录机器人时 使用 Botframework OAuthPrompt 功能 用户需要登录 Microsoft 页面 然后要求复制魔术代码并将其粘贴到与机器人的对话中 有没有一种方法可以自动传递它而无需用户输入 文档说它应该在 v4 中解决
  • Ajax.ActionLink 替代方案 - Net Core

    早些时候在MVC I used Ajax ActionLink用于 Ajax 调用并替换了布局中的容器 Now in Net核心有类似的东西Ajax助手那时 我怎样才能形成Ajax打电话不写jquery我的仪表板中每个菜单项的脚本 I tr
  • 类访问私有方法的最佳方式(私有名称修改)

    如果我有这个 class Test def init self x self x x def A self doA def doA print A if name main t Test 1 t A 显然这会导致NameError glob
  • 如何创建具有多行代码的宏?

    我想制作一个宏来注入一些代码 例如 if foo Bar fooBar 然后 只要我需要 我就会将 FOOBAR 放入代码中 不确定 但在编译时 编译器会将其替换为实际代码 如上例所示 也许我可以使用与宏不同的东西 使用 转义您想要成为宏一
  • 使用反向引用的多行 sed

    我正在使用命令行脚本转换补丁脚本 在这些脚本中 有两行组合 例如 dev null filename txt 需要转换为 filename txt filename txt 最初我尝试过 less file diff sed e s dev
  • 如何正确处理带有 MessageBox 确认的 PreviewMouseDown 事件?

    早些时候我问过如何取消 WPF TreeViewItem Selected 事件 回答者建议我在选择发生之前处理 PreviewMouseDown 事件 这就说得通了 我已经尝试这样做了 XAML
  • Codeigniter从视图到控制器获取ajax值

    如何得到send在我的控制器中 这是我尝试过的 Ajax ajax type POST url example name data send success function value 控制器 class Example extends
  • pygame 不适用于便携式 python

    我试图让 pygame 使用可移植的 python 3 2 1 1 在 USB 记忆棒上运行 但是当我使用以下代码时 import pygame sys It says ImportError No module named pygame
  • 将 PDF 渲染为图像并提取超链接

    我使用 imagemagick 将 PDF 由 pdfLaTex 生成 渲染为图像 convert density 120 test pdf trim test png 然后我在 HTML 文件中使用该图像 以便在自己的 wiki 引擎中包
  • 为什么我的 ML 函数推断的类型与我预期的不同?

    我做了一个函数 它的名字是maptree 下面是我的代码 datatype a tree LEAF of a NODE of a tree a tree fun maptree f NODE X Y NODE maptree f X map
  • Linux 中有标准的退出状态代码吗?

    在 Linux 中 如果进程的退出状态为 0 则认为该进程已正确完成 我发现分段错误通常会导致退出状态为 11 尽管我不知道这只是我工作的约定 像这样失败的应用程序都是内部的 还是标准 Linux 中的进程有标准退出代码吗 第 1 部分 高
  • ASP.Net / MySQL:将内容翻译成多种语言

    我有一个 ASP Net 网站 它使用 MySQL 数据库作为后端 该网站是一个英语电子商务系统 我们正在考虑将其翻译成大约五种其他语言 法语 西班牙语等 的可能性 我们将让人工翻译人员来执行翻译 我们已经研究过自动化服务 但这些还不够好
  • Azure 使用文件共享从 IIS VM 共享照片?

    如何创建可在 VM 中运行的 Web 服务器之间共享的文件共享 以直接访问 Azure 中的 Blob 存储 我正在将用 net 1 1 编写的现有 n 层网站应用程序迁移到 Azure 虚拟机 这是一个遗留应用程序 我想将其以当前形式移动
  • MPMoviePlayerController 处于纵向模式?

    我想知道是否可以在纵向模式下使用 MoviePlayer 感谢您的帮助 T 如果你使用 moviePlayer setOrientation UIDeviceOrientationPortrait animated NO API 您的应用程
  • 如何暂停 Windows 关闭

    我需要在启动和关闭时将声卡静音 取消静音 我找到了一些代码来完成这项工作 但 Windows 通常会突然关闭 并且声音永远不会静音 有人可以告诉我如何暂停关闭足够长的时间以使我的应用程序静音吗 我可以使用一个简单的 TTimer 来暂停应用
  • 在 SQL Server Management Studio 中生成脚本

    如果我有一个包含 SQL Server 数据库中数据的表 我如何生成一个脚本来创建该表并添加数据 如果我右键单击表格然后选择Script Table As gt Create to gt File 它生成一个脚本来仅创建没有数据的表 我需要
  • php pdo多数组插入

    我已经玩了几个小时并试图解决这个问题 但看起来很难解决 我能够进行单个数组插入 person array name gt Wendy age gt 32 但如果我想要多个这样的 person array array name gt Dan