Sql 查询绑定变量与指定它们[重复]

2023-12-01

我正在 mySql 中创建一个简单的查询,以将表单中的一些值插入到我的数据库中。

我的问题很简单,但涉及绑定变量与将它们指定到 sql 语句中之间的区别。

Binding:

$query = "INSERT INTO test (name, lastName, price) VALUES (:name, :lastName, :price)";
$apply = $con -> prepare($query);
$apply -> execute (array(':name'=>$name,':lastName'=>$lastName,':price=>$price'));

Typical:

$query = "INSERT INTO test (name, lastName, price) VALUES ($name, $lastName, $price)";
Execute the query....

即使对于上述简单情况,是否真的建议使用“绑定”选项?这是为什么?

Thanks!


尽管您可以在不绑定的情况下使查询完全安全(通过手动格式化所有变量),但使用准备好的语句来表示查询中的数据确实是唯一正确的方法。

使用准备好的语句的重要性经常被误判,因此,我想澄清一下真正的好处:

  • 准备好的语句进行正确的格式化(或处理)不可避免的.
  • prepared statement does proper formatting (or handling) in the only proper place - right before query execution, not somewhere else, so, our safety won't rely on such unreliable sources like
    • PHP 的一些“神奇”功能宁可破坏数据,也不保证数据安全。
    • 一个(或几个)程序员的良好意愿,他们可以决定在程序流中的某个位置格式化(或不格式化)我们的变量。这是非常重要的一点。
  • 准备好的语句会影响进入查询的值,但不会影响源变量,源变量保持不变并可以在进一步的代码中使用(通过电子邮件发送或在屏幕上显示)。
  • 准备好的语句可以使应用程序代码大大缩短,在幕后完成所有格式化(*仅当驱动程序允许时)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sql 查询绑定变量与指定它们[重复] 的相关文章

随机推荐

  • 连续文本组件中的空文本空间反应本机

    我有这个问题 我需要将 dummy 一词放在第一行中 直到该行完成 您可以在此处查看示例 https snack expo io B1KcRgGWX 代码 import React Component from react import T
  • 如何在bash中通过opencv访问网络摄像头?

    通过python opencv访问网络摄像头时 isOpened 返回False并且没有读取任何数据 它必须与 wsl 做一些事情吗 根据这个 github 问题 WSL 中尚不支持硬件访问 Ben Hillis 硬件访问是我们将来要研究的
  • 基准测试(Python 与使用 BLAS 的 C++)和 (numpy)

    我想编写一个广泛使用 BLAS 和 LAPACK 线性代数功能的程序 由于性能是一个问题 我做了一些基准测试 想知道我采取的方法是否合法 可以这么说 我有三个参赛者 想通过简单的矩阵乘法来测试他们的表现 参赛者是 Numpy 仅使用dot
  • 处理屏幕方向变化的片段?

    我正在使用这种代码来处理主要活动中的三个片段 FragmentA is Fixed it One Frame I change FragmentB and FragmentC on Button Click on FragmentA his
  • Jupyter 笔记本中的 Imagegrid

    我正在遵循 matplotlib 文档中的示例图像网格 我正在尝试从 Jupyter 笔记本中复制它 matplotlib inline import matplotlib pyplot as plt from mpl toolkits a
  • Google是如何实现首页淡入淡出的效果的?

    如果您访问 google com 您会发现将鼠标悬停在页面上后 顶部的菜单会慢慢出现 我想知道谷歌用什么来控制褪色效果 编辑 因为我不使用 jQuery 所以我不想仅仅为了使用此功能而包含它 有两种方法 JavaScript 适用于大多数浏
  • 在 JavaTokenParsers 中将空格设置为分隔符

    延伸JavaTokenParsers 我有以下内容 class Foo extends JavaTokenParsers lazy val check id action obj lazy val id FOO BAR lazy val a
  • 通过 Excel VBA 在 Outlook 中打开新邮件

    每天我都在处理日常报告 这非常耗时 基本上 我需要发送包含昨天销售额与上周和上个月销售额的简要比较的电子邮件 这工作得很好 完成此操作后 消息将粘贴到新工作表中 然后我必须将其复制并粘贴到 Outlook 中的新电子邮件中 是否有可能创建宏
  • 如何将“System.Windows.Input.Key”转换为“System.Windows.Forms.Keys”?

    我正在 WPF 中开发应用程序 但某些组件是使用 WinForms 编写的 我不希望这些组件从 WPF 部分提取按键手势并将它们转换为 Keys 枚举 在 WinForms 中使用 有内置转换器吗 可能不会 你知道 比大开关盒更容易 的方法
  • 如何让 VML 在标准模式下工作?

    我希望能够在标准模式而不是怪异模式下的页面渲染上使用 vml 对象 我发现答案的碎片散落在各处 但无法弄清楚 Raphael以某种方式把它拉下来 但我无法扭转它来弄清楚发生了什么 任何基本的工作示例都会很棒 我想我已经弄清楚了 第 1 步是
  • Kafka Streams 物化存储构建错误

    我正在尝试在这里构建 Materialized as DSL 代码 https kafka apache org 11 javadoc org apache kafka streams state Stores html 但我收到错误 in
  • Android 连续语音识别

    我正在考虑在 Android 中进行语音识别 该程序需要具有连续的语音识别功能 图书馆只需要大约10个字 我考虑过使用 Google 的 api 但我认为它不会起作用 我不能让任何东西覆盖屏幕 我一直在寻找其他方法 但似乎没有任何效果 是否
  • 与mysql中的同一个表连接?

    我有下表 每个员工都有一个经理 如果一个人是他自己的经理 则 managerid 字段为空 我想要emid name and manager id结果表名是employee emid name managerid 1 raj null 2
  • asp.net 中的预定邮件

    大家好 我的应用程序处理预定邮件概念 即 每天早上 6 点 我的用户会收到有关他们当天活动的剩余邮件 我不知道如何执行此操作 许多人告诉使用 Windows 服务 但我将托管我的网站在共享服务器上 我可能无法获得执行Windows服务的权限
  • 带十进制的正则表达式验证

    正在进行正则表达式验证 我验证为 XX XX 使用我的正则表达式我可以写 2 233 并且它仍然会通过 regex d 1 2 d 2 也许您应该添加开始和结束限制 如下所示 regex d 1 3 d 2 Demo http regex1
  • 展平 Spark DataFrame 中的嵌套数组

    我正在阅读一些来自以下内容的 JSON a b c 1 d 2 也就是说 数组项不必要地嵌套 现在 因为这发生在数组内部 所以给出的答案如何展平 Spark 数据框中的结构 不要直接申请 这是解析数据框时的样子 root a array e
  • 闪亮的应用程序 rglwidget 让 userMatrix 生成另一个具有相同旋转的图

    我有一个闪亮的应用程序 并将 rgl 3d 绘图集成到其中 我在用renderRglwidget来自rglwidget包使用 webgl 将 rgl 图形插入到我闪亮的应用程序中 在应用程序中 用户可以旋转图形 现在我想保存旋转状态 因此
  • C 中的华氏转换公式存在问题[重复]

    这个问题在这里已经有答案了 当用 C 编写程序将摄氏温度转换为华氏温度时 以下公式给出了错误的输出 int fahr 9 5 celsius 32 现在 我明白这可能是 9 5 被解释为整数的问题 但我不明白的是使用double or fl
  • 'CreateDirectoryW':无法在 OpenCV 2.4.5 和 VS 2010 中将参数 1 从 'const char *' 转换为 'LPCWSTR'

    我正在尝试从 openCV 2 4 5 到 Visual Studio 2010 基于 VC 的示例代码 bagofwords classification cpp 但我发现了错误代码 error C2664 CreateDirectory
  • Sql 查询绑定变量与指定它们[重复]

    这个问题在这里已经有答案了 我正在 mySql 中创建一个简单的查询 以将表单中的一些值插入到我的数据库中 我的问题很简单 但涉及绑定变量与将它们指定到 sql 语句中之间的区别 Binding query INSERT INTO test