处理来自多个选择字段的数据

2023-12-08

我有一个多重选择字段,设计如下:

<select name="deductions[]" multiple="multiple">
<option>Option 1</option>
<option>Option 2</option>
<option>.......</option>
</select>

我想使用 php post 从上面的选择字段获取值到数据库。这就是我所做的

<?php
$deds=$_POST['deductions'];
$deds_joined=join(',',$deds);
$sql=mysql_query("insert into mytable(deduction) values($deds_joined)");
/*code continues*/

我的兴趣是将扣除值获取到数组并以这种方式将其存储在数据库中: 值1,值2,值3。 不幸的是我无法实现这一点。相反,仅获得了预期数组的单个值。 我们将非常感谢您的帮助。谢谢。


首先也是最重要的:

请不要使用mysql_*新代码中的函数。它们不再被维护并已被正式弃用。请参阅red box?学习关于准备好的陈述相反,并使用PDO, or MySQLi - 本文将帮助您决定哪个。如果您选择PDO,这是一个很好的教程.

遵循这个建议变得比以往任何时候都更加重要,ext/MySQL 现已被弃用,使用它会发出E_DEPRECATED从 PHP 5.5 开始的错误,有一天它将从核心语言中完全删除。话虽如此,以下内容适用于所有数据库的所有驱动程序。

对于本解释的其余部分,我将假设您由于某种原因无法使用 MySQLi 或 PDO(请注意only这里令人满意的原因是它们不可用,“我不知道如何使用它们”不是借口)并且您被迫使用 ext/MySQL。如果您能够使用任一较新的驱动程序,那么您就能够使用准备好的语句,并且这些都不适用。所以,考虑到这一点...

接下来我们看看之前的答案有什么问题。这以转义用户输入为中心。它用mysql_real_escape_string()这是一种毫无意义的方式。这应该用于转义单个字符串文字,绝对不能用于其他用途。它不能用于有效转义数字,也不能用于转义 SQL 中不仅仅是值的部分。

以下两个代码片段显示了执行此操作的正确方法,具体取决于数据是什么以及最重要的是其类型。

如果值是字符串(通常是CHAR or VARCHAR field):

// First create an array of individually escaped values with quotes added
$deds = array();
foreach ($_POST['deductions'] as $ded) {
  $deds[] = "'".mysql_real_escape_string($ded)."'";
}

// Now join them together in an SQL syntax
$deds_joined = join('), (', $deds);

// Now they can safely be used in the query
$query = "INSERT INTO mytable (deduction) VALUES ($deds_joined)";

但通常在这种情况下,这些值只是数字,在这种情况下,我们需要做的就是确保 PHP 使用正确的数据类型表示它们,因为当它们转换回字符串时,它们将自动安全。在查询中使用:

// First convert the array values to integers
$deds = array();
foreach ($_POST['deductions'] as $ded) {
  $deds[] = (int) $ded;
}

// Now join them together in an SQL syntax
$deds_joined = join('), (', $deds);

// Now they can safely be used in the query
$query = "INSERT INTO mytable (deduction) VALUES ($deds_joined)";

这段代码显然假设数据是整数类型,只需更改浮点数即可轻松处理(int)投射到(float).

还值得注意的是,字符串方法也可以安全、成功地用于数值,因为 MySQL 也会将值转换为正确的类型。但一般来说,在查询中使用正确的类型表示传递数据会更好、更高效。

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

处理来自多个选择字段的数据 的相关文章

  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • 如何将 MySql 表导出/转储到文本文件中,包括字段名称(也称为标题或列名称)

    在 MySql 的解释器中 很容易将表及其字段名称转储到屏幕上 似乎没有简单的方法可以将表导出到制表符分隔或 CSV 输出文件包括它的列标题 我尝试仅使用 SQL 或 Linux 命令行来完成此操作 而不用其他语言编写程序 谢谢 将查询通过
  • 适用于 Windows 的 PHP 支持的 GUI 应用程序

    我知道 PHP 是一种解释性语言 对于基于 Web 的事物来说 不是为在实际操作系统上运行 GUI 应用程序而设计的 但是有没有办法呢 基本上 是否有一个框架 系统允许我创建 本机 基本上是二进制文件 exe 看起来像带有本机控件和所有内容
  • PHP 中的正则表达式:找到第一个匹配的字符串

    我想在非常长的文本中找到第一个匹配的字符串 我知道我可以使用 preg grep 并获取返回数组的第一个元素 但是 如果我只需要第一场比赛 或者我知道提前只有一场比赛 那么这样做效率不高 有什么建议吗 预匹配 http www php ne
  • 如何让MySQL数据库完全在内存中运行?

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

    所以我正在读一本关于数据库设计原理的书 并读到了有关继承的章节 但我对如何在 MySQL 中将子类与其超类 连接 感到困惑 The table structure would for example look like this 那么我如何
  • WooCommerce:用文本覆盖购物车价格

    我们有很多产品具有以下功能 No price 零价格 我们让它们可以通过内置挂钩购买 但购物车仍然将它们显示为具有0 price结账时 我们希望购物车和结帐摘要显示 特殊订单 或任何其他文本 但 WooCommerce 似乎使基于文本的价格
  • Django 表单:时间字段验证

    我觉得我在这里遗漏了一些明显的东西 我有一个 Django 表单 其中包含时间场 http docs djangoproject com en dev ref forms fields timefield在上面 我希望能够允许像 10 30
  • Propel Query 中的动态表名称

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

    是否存在更好的方法来反转 X 的元素 gt gt X dec2bin 10 X 1010 我这样做了 x i num2str 1 str2num x i 如果我理解正确的话 你想将一位设置为 1 使用bitset bitset x bitN
  • URL 重写帮助

    RewriteEngine on RewriteCond REQUEST URI index php RewriteRule index php q 1 L 这应该将任何 url 重写为 index php q url 并且它可以工作 反正
  • 我可以显示我在 PHP 中设置的所有 cookie 吗?

    我正在尝试诊断 cookie 中的错误 但 cookie 的名称不是应有的名称 PHP 有没有办法打印我的域设置的所有 cookie 你有没有尝试过 print r COOKIE
  • 如何在 joomla 模块中通过 javascript 发送输入文件类型

    我想将带有 javascript 的文件发送到 php 文件 我的 php 文件中有这个表单
  • Codeigniter form_open指定id

    如何在CodeIgniter的form open函数中写入表单ID 我需要使用 CSS 的 ID 例如 这是简单的 HTML
  • 将秒转换为天、小时、分钟和秒

    我想转换一个变量 uptime这是秒 分为天 小时 分钟和秒 Example uptime 1640467 结果应该是 18 days 23 hours 41 minutes 这可以通过以下方式实现DateTime http php net
  • django 表单错误打印 __all__

    默认登录模板中的代码 form errors 当帐户处于非活动状态时生成以下 html 输出 ul class errorlist li all ul class errorlist li This account is inactive
  • 使用 php 和 symfony 从数组创建 Excel 文件

    我正在尝试使用 PHP 和 symfony 将数组导出为 XLS 文件 如下面的代码所示 创建 XLS 文件后 我只能获取数组的最后一行 并且它显示在文件的第一行中 似乎 lignes 变量没有增加 我不明白出了什么问题 有人可以帮忙吗 f
  • ZF2 工厂获取参数

    我有一个动态类别导航 在导航工厂中 我想从路线获取参数 我怎样才能做到这一点 在我看来 在我的 module php 中 public function getServiceConfig return array factories gt
  • 解析 PHP 响应:未捕获的语法错误:意外的标记 <

    我正在使用 AJAX 来调用 PHP 脚本 我唯一需要从响应中解析的是脚本生成的随机 ID 问题是 PHP 脚本会引发许多错误 这些错误实际上很好 不会妨碍程序功能 唯一的问题是当我跑步时 parseJSON response I get
  • 处理查询字符串参数时 Codeigniter 缓存问题

    问候 我正在编写一个 CI Web 应用程序 它实现标准文件缓存功能 如下所示 this gt output gt cache n 我使用了段和查询字符串参数的组合 因此似乎遇到了问题 我在用例和输出类代码中看到的是 缓存仅基于段 像这样

随机推荐

  • 测试套件运行失败 TypeError: Cannot set property 'content' of null 在 Jest 中运行

    我正在基于 Vue 的项目编写测试 并且我是 Framwork Jest 和 Vue 测试 Utils 的新手 我还没有找到类似问题的解决方案 我尝试过几个组件 但错误总是类似 示例 test js import shallowMount
  • 如何拒绝/关闭特定来电号码

    在我的应用程序中 我想阻止特定的传入号码 我进行谷歌搜索 然后执行以下操作阻止来电 Android 但这段代码对我不起作用 我正在测试安卓2 3 5 我这里没有活动课 gt gt 第一类是扩展BroadcastReceiver 清单文件
  • 如何知道应用程序在android中运行了多长时间?

    我正在android中做一个应用程序 它需要知道应用程序运行了多长时间 有谁知道如何检索此类信息 android 有什么方法可以提供有关正在运行的应用程序的信息 从它们运行的 时间来看 我不知道有什么方法可以处理这个问题 但你可以简单地自己
  • 如何强制 xslt 转换将数据加载到 cdata 部分?

    我有一个客户要求我提供给他们的 xml 中的所有文本都位于 CDATA 部分中 我知道文本不需要在 CDATA 中 因为它在提供给客户端时已经被解析和转换 然而 无论我多么确定 他们仍然需要 CDATA 部分 叹 我正在使用 Saxon 9
  • 如何检测 facebook 的 FB.init 何时完成

    旧的 JS SDK 有一个名为 FB ensureInit 的函数 新的SDK似乎没有这样的功能 我如何确保在完全启动之前我不会进行api调用 我把它放在每页的顶部 div div
  • 将 Objective-C typedef 转换为其等效字符串

    假设我在 h 文件中声明了一个 typedef 如下所示 typedef enum JSON XML Atom RSS FormatType 我想构建一个将 typedef 的数值转换为字符串的函数 例如 如果消息 self toStrin
  • Android - 如何获取应用程序名称? (不是包名)

    在我的清单中我有
  • 使用 System.AccessToken 创建服务端点

    目前 我们使用特定的用户名和 PAT 来进行 Azure DevOps REST API 调用 但从维护和脆弱性的角度来看 这不是一个好的解决方案 我们想改用 OAuth 令牌 我们遇到问题的一种情况是尝试从管道生成服务端点 我可以使用以下
  • 使用c#获取系统信息[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何获取计算机的系统信息 系统制造商 系统型号 Bios版本 您可以使用以下方式获取制造商名称 添加引用System Management System Management S
  • java dom getTextContent() 问题

    当我尝试访问我的 xml 数据时doGet我的 servlet 的方法 它只输出直到空白的值 包括整个值 XML 文件
  • 在 AWS iOS SDK 中,如何处理 FORCE_CHANGE_PASSWORD 用户状态

    我已经按照这里的示例进行了操作 https github com awslabs aws sdk ios samples tree master CognitoYourUserPools Sample 将交互式认知登录集成到我的 iOS 应
  • 如何识别图片中的钞票?

    我有一些欧元钞票的图片 账单完全在图像内 并且大多是平坦的 例如变形很小 并且透视倾斜很小 例如完全从钞票上方拍摄的图像 现在我不是图像识别方面的专家 我想实现以下目标 找到钞票的边界框 这样我就可以从图像其余部分的噪声中 剪掉 钞票 弄清
  • Java Graphics2D浮点精确drawOval替代品?

    因此 我尝试绘制一个圆弧并在其圆形端点周围放置一个圆 但由于舍入到最近的像素 我遇到了问题 这在某些情况下是可见的 但并非在所有情况下都是可见的 有没有办法使用浮点和抗锯齿来绘制圆来消除这种舍入误差 您可以运行此代码来查看问题 为了清晰起见
  • max深度和min深度如何与find命令一起使用?

    我想知道最大深度和最小深度如何与 find 命令一起使用 还想知道下面的命令是如何工作的 find mindepth 2 maxdepth 5 name file1 根据find 的手册页 maxdepth levels Descend a
  • 比较 Timer 与 DispatcherTimer

    有什么区别between System Windows Forms Timer and System Windows Threading DispatcherTimer 在什么情况下我们应该使用它们 有什么最佳实践吗 Windows For
  • 使用 h5py 打乱 HDF5 数据集

    我有一个很大的 HDF5 文件 30GB 我需要对每个数据集中的条目 沿着 0 轴 进行洗牌 浏览 h5py 文档我也找不到randomAccess or shuffle功能 但我希望我错过了一些东西 有谁足够熟悉 HDF5 来想出一种快速
  • 请求权限对话框暂停我的活动

    我在里面请求许可onActivityResult我的活动的情况 发生的情况是我的活动在显示请求权限对话框时被暂停 这是为什么 我能以某种方式阻止它吗 我所做的只是以正常方式请求许可 if Build VERSION SDK INT gt B
  • EF Core 3.1.14 重复冷启动

    我们已将一个非常简单的 NET CORE 3 Web API 应用程序部署到 Azure 云 该应用程序是一个 Web API 并与 Azure 中托管的一个非常简单的 SQL 服务器数据库进行通信 我们注意到两个主要的性能问题 所有 AP
  • 替换R中矩阵中的非对角元素(希望这次问得更好)[重复]

    这个问题在这里已经有答案了 好吧 我早些时候问过这个问题 但我因为没有指定任何内容并且没有显示出之前尝试的迹象而受到了 理应的 批评 所以让我再试一次 I m using R and I have a 463 463 matrix What
  • 处理来自多个选择字段的数据

    我有一个多重选择字段 设计如下