使用包含空值的数组执行 PDO [重复]

2023-11-22

我需要更新数据库并且我使用 PDOexecute()方法通过给它一个数组作为参数。

这个想法是,当我尝试插入一个时,它会给我一个错误NULL价值...

以下是发送的查询/参数的示例:

生成的查询:

UPDATE table SET name=?, id_extra1=?, id_extra2=? WHERE id_something=?

参数数组:

array (size=8)
  'name' => string 'testing' (length=6)
  'id_extra1' => string '2' (length=1)
  'id_extra2' => null
  'id_something' => string '1958' (length=4)

So the NULL值是为了id_extra2

在代码中id_extra2我有这样的条件(这个想法是我有一个 ID 或 0,然后我必须用NULL):

if ($_POST['id_extra2']==0) {
    $_POST['id_extra2'] = null;
}

我尝试设置$_POST['id_extra2'] to '' and to NULL and to 'null'但它仍然不起作用。


请考虑使用bindValue而不是传递数组来执行。正如它所说here:

所有值都被视为 PDO::PARAM_STR。

应该可以使这对应用程序的其余部分非常透明,因为您已经拥有想要以数组形式更新的值。尝试例如像这样的东西:

<?php
function executeWithDataTypes(PDOStatement $sth, array $values) {
    $count = 1;
    foreach($values as $value) {
        $sth->bindValue($count, $values['value'], $values['type']);
        $count++;
    }

    return $sth->execute();
}

$sth = $handle->prepare("UPDATE table SET name = ?, id_extra1 = ?, id_extra2 = ? WHERE id_something = ?");

$values = array();
$values[] = array('value' => 'testing', 'type' => PDO::PARAM_STR);
$values[] = array('value' => 2, 'type' => PDO::PARAM_INT);
$values[] = array('value' => null, 'type' => PDO::PARAM_NULL);
$values[] = array('value' => 1958, 'type' => PDO::PARAM_INT);

$result = executeWithDataTypes($sth, $values);
?>

正如您指出的那样,使用 bindParam 过去会让您感到头疼,请注意两者之间的细微差别绑定值 and 绑定参数。就我个人而言,我从不使用bindParam,因为副作用使得理解脚本变得更加困难,尽管当然在某些情况下这些效果会派上用场。

编辑:您当然可以进一步简化函数,并通过执行以下操作来消除将类型指定为传递数组中的附加键的需要:

$type = PDO::PARAM_STR;
switch(true) {
    case is_null($value): $type = PDO::PARAM_NULL; break;
    case is_numeric($value): $type = PDO::PARAM_INT; break;
    // ...
    default: break;
}

并根据数组中传入的值的类型确定类型;然而,这更容易出错,因为例如浮点数也是数字,这会导致上述 switch 语句中的错误决定,但我想为了完整性而提及它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用包含空值的数组执行 PDO [重复] 的相关文章

  • artisan 明确编译返回错误代码 255

    跑步时composer install在我的 laravel 项目中 我收到错误 脚本 php artisan 清晰编译处理返回的 post install cmd 事件 错误代码为 255 关于可能出现的问题有什么建议吗 请注意 comp
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • 如何在codeigniter中插入具有多个单选名称的单选按钮值?

    我正在尝试使用 codeigniter 进行在线测验 其中有一个针对某些主题的动态测验 用户可以在每个问题中添加问题和多项选择答案 我如何获得每个问题的每个多项选择答案中每个答案的值 p p
  • 在 PHP 中重新定义常量

    是否可以在 php 中重新定义由define功能 我有一个包含多个常量的类 其中包含用户数据 我正在尝试为多个用户使用该类 define ALLEGRO ID id define ALLEGRO LOGIN login define ALL
  • 如何使用 PHP 从图像文件中读取 Lightroom 关键字?

    我有一个照片社区 www jungledragon com http www jungledragon com 允许用户上传照片 我的平台是 PHP CodeIgniter 作为上传过程的一部分 我已经使用 PHP 读取 EXIF 信息ex
  • php - 未知:第 0 行需要打开失败。laravel 5.6

    我刚刚安装了 laracast flash 并通过 Composer 更新了 nesbot carbon 下载碳时命令发疯了 Cmd界面显示了一会界面上散落的文字和方框 下载完成 做过php artisan serve at localho
  • yii2 无线电内联 Html 帮助器

    我在 yii2 中有这个 radioList Html radioList abc null new class gt form control input sm 它生成这个 div class radio 但我想要 div class r
  • 如何获取与我当前所在商店相关的产品所属类别 ID

    我在产品页面上并拥有产品对象 但是当我尝试使用以下方式获取类别 id 时 product gt getCategoryIds or product gt getResource gt getAttribute category ids gt
  • 自动检测内部/外部开发环境

    我们使用以下函数来自动检测我们是在内部机器上还是在实时服务器上 然后为各种组件选择适当的配置 function devIsLocal res false http host SERVER HTTP HOST if http host loc
  • 多维数组内的移动

    我有一个用表格显示的数组 如何使用用户输入进行移动 目前 0 被分配给每个数组 但我计划为该数组分配其他值 我的问题是 如何使用用户输入在数组内向上 向下 向右 向左移动和对角移动 Array 0 gt Array 0 gt 0 1 gt
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 如何在 PHP 中使用 file_get_contents 获取图像的 MIME 类型

    我需要获取图像的 MIME 类型 但我只有图像的正文file get contents 是否有可能获取 MIME 类型 是的 你可以这样得到它 file info new finfo FILEINFO MIME TYPE mime type
  • 在 WooCommerce 管理订单项目上显示产品自定义字段(也适用于可变产品)

    基于在 WooCommerce 的订单编辑页面上显示自定义字段 https stackoverflow com questions 56259910 show custom fields on the order editing page
  • 非常大的字段会对 MySQL 数据库产生负面影响吗?

    我目前正在使用 Django 构建一个网站 并希望托管用户生物样式页面 该页面可能长达几 KB 这些字段不一定需要搜索 但在查找用户名时确实需要提供 将这些数据存储在数据库中会产生负面影响吗 如果我使用带有数据库链接的静态文本文件 我的服务
  • 获取url,给定的url重定向到

    我从 rss 链接中挖掘数据并获得一堆网址 例如 http feedproxy google com r electricpig 3 qoF8XbocUbE http feedproxy google com r electricpig 3
  • 添加 current_page_item 类

    我正在研究 WordPress 设计 我想创建一个自定义菜单 items wp get nav menu items Menu array order gt ASC orderby gt menu order post type gt na
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 递归获取数组的键并创建下划线分隔的字符串

    现在我得到了一个包含某种信息的数组 我需要从中创建一个表 例如 Student Address StreetAddress gt Some Street StreetName gt Some Name Marks1 gt 100 Marks
  • 如何使用 PHP 正确添加跨站请求伪造 (CSRF) 令牌

    我正在尝试为我网站上的表单添加一些安全性 其中一个表单使用 AJAX 另一个表单是简单的 联系我们 表单 我正在尝试添加 CSRF 令牌 我遇到的问题是令牌有时只显示在 HTML 值 中 其余时间 该值为空 这是我在 AJAX 表单上使用的
  • 如何在 SEQUELIZE (nodeJS) 中创建触发器?

    我正在尝试使用sequelize 创建一个触发器 主要思想是创建一个实例CONFIG创建后USER USER MODEL module exports function sequelize DataTypes var User sequel

随机推荐

  • 在 PHP 中跨服务器传输会话

    我需要跨服务器传输用户会话 IE 如果用户登录 server1 并且该用户存在于 server2 中 那么我必须将用户会话详细信息传输到 server2 为此 我使用了以下技术 从 server1 将用户重定向到http server2 a
  • 如何回收我的 SqliteCommand 以加速此 Sqlite 批量插入 (iOS)?

    我使用下面的代码批量插入 30000 行 一次 1000 行 但它仍然没有达到应有的速度 在这个例子中提高 SQLite 的每秒插入性能 我可以看到他们正在创建SqliteCommand仅一次 然后通过重置并清除绑定来回收它 但是 我在 i
  • FacesContext 的生命周期?

    在经历javadoc 的FacesContext 我看到这句话 该实例保持活动状态 直到调用其release 方法为止 之后不允许进一步引用该实例 当 FacesContext 实例处于活动状态时 除了执行此 Web 应用程序的 Servl
  • 在 URL 中传递用户名和密码以进行 HTTP 基本身份验证

    当传递 URL 中编码的用户名和密码时 例如 https 阿拉丁 电子邮件受保护 index html 客户端实际上是否在授权标头中发送了此信息 对于这种URL编码 服务器端需要进行怎样的处理呢 客户端实际上是否在授权标头中发送了此信息 这
  • RxJ 中“new Observable()”和“of()”有什么区别

    有什么区别new Observable and of in RxJs 在我的测试用例中 当我尝试返回时new Observable 它给了我一个有线错误 如果我将其替换为of 来自 Rxjs 它工作正常 我的印象是Observable cr
  • 跨项目的部分类

    是否可以跨项目进行部分类 例如项目 1 有一个客户类别 Project2 是一个可选模块 通过附加订单类并利用原始客户类来添加到客户类中 您不能使用partial关键字在项目之间拆分类的代码 这partial关键字是编译器技巧 编译器将从它
  • 在 VB.NET 的 List(Of String) 中查找重复项

    我有一个customers我试图在其中查找重复客户的列表 字符串 If Not customers Count customers Distinct ToList Count Then customers customers Except
  • 使用 JPA 标准通过标准构建器为 postgres jsonb 列构建谓词

    我需要将谓词添加到 JSONB 列的现有谓词列表中 Entity Entity Table name a TypeDefs TypeDef name jsonb typeClass JsonBinaryType class public c
  • NSData writeToFile:atomically: 不会立即保存文件

    我正在从网络下载 SQLite 数据库到我的 iPad 应用程序中 如果我将其写入磁盘设置atomically YES我无法立即使用它 因为即使文件在那里 sqlite 也会抱怨表不在那里 如果我使用atomically NO或者我延迟打开
  • 为仅可用作键盘快捷键的命令添加 Visual Studio 工具栏按钮

    这个问题与此相关ReSharper YouTrack 问题 在安装了 ReSharper 7 1 1 的 Visual Studio 2010 中 如果我转到 工具 gt 选项 gt 环境 gt 键盘 则会出现一个名为 ReSharper
  • Hive JDBC getConnection 不返回

    我正在关注 hive JDBC 教程 我无法让它工作 当它尝试获取连接时 它就会挂起 它也不报告任何错误 我确定 Hive 服务器正在运行 有什么帮助吗 public class HiveJdbcClient private static
  • 团队构建错误:路径...已映射到工作区

    在 Team Foundation Server 中创建新版本时 尝试运行新版本时出现以下错误 路径 C Build ProductReleases FullBuildv5 4 2x Sources 已经映射到工作区 构建服务器 23 我无
  • this.$emit 与 this.$root.$emit,vuejs 中的最佳实践

    我有 vue2 组件 可以使用以下命令添加和删除v if 在某些情况下 我在他们之间进行交流 emit来自发件人 以及 on在接收器中 我一直在使用this root emit广播自定义事件和this root on来处理事件 我发现使用t
  • 如何在JavaFX中为组布局添加背景颜色?

    我需要向 JavaFX 中的组添加背景颜色 我尝试用 CSS 添加它 但由于某种原因它不起作用 CSS 适用于所有其他布局管理器 但不适用于 Group 我该怎么办 Solution 替换您的使用Group with a Pane一切都会表
  • asp.net MVC 如何记住回发时的错误值?

    这是可行的 但是如何 我有一个帖子的控制器操作 AcceptVerbs HttpVerbs Post public ActionResult Edit Person person bool isvalid ModelState IsVali
  • 与双显示器一起使用时的 tkinter winfo_screenwidth()

    使用 tkinter canvas 要计算我显示的图形的大小 我通常使用该函数winfo screenwidth 并相应地调整我的对象的大小 但当在具有两个显示器的系统上使用时 winfo screenwidth 返回两个显示器的组合宽度
  • 绑定函数(委托)参数

    我试图在不使用 lambda 函数的情况下实现以下目标 Func
  • Cython:对于类型化内存视图,我应该使用 np.float_t 而不是 double

    关于 cython 中的内存视图 使用 NumPy 类型输入视图是否有任何优势 例如np float t而不是简单地做double如果我正在使用 numpy float 数组 我应该输入cdef然后以同样的方式 做e G ctypedef
  • 当滚动视图太短而无法滚动时,滚动视图不会滑动

    我对 Android 应用程序开发还很陌生 我一直在使用 Android 的 SimpleOnGestureListener 和 ViewFlipper 来尝试滑动手势 ViewFlipper 有 3 个子级 每个都是一个 ScrollVi
  • 使用包含空值的数组执行 PDO [重复]

    这个问题在这里已经有答案了 我需要更新数据库并且我使用 PDOexecute 方法通过给它一个数组作为参数 这个想法是 当我尝试插入一个时 它会给我一个错误NULL价值 以下是发送的查询 参数的示例 生成的查询 UPDATE table S