如何处理 SQL 中的引号 ' [重复]

2024-03-25

我有一个数据库,其中包含 John Doe 等姓名。不幸的是,其中一些姓名包含引号,例如 Keiran O'Keefe。现在,当我尝试搜索此类名称时,如下所示:

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe' 

我(可以理解)收到一个错误。

我该如何防止此错误发生。我正在使用 Oracle 和 PLSQL。


转义字符是 ',因此您需要用两个引号替换引号。

例如,

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'

becomes

SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'

也就是说,您自己这样做可能是不正确的。您的语言可能具有转义字符串以便在 SQL 中使用的功能,但更好的选择是使用参数。通常其工作原理如下。

你的 SQL 命令是:

SELECT * FROM PEOPLE WHERE SURNAME=?

然后,当您执行它时,您传入“O'Keefe”作为参数。

因为 SQL 是在设置参数值之前解析的,所以参数值无法改变 SQL 的结构(如果您想使用不同的参数多次运行相同的语句,甚至会更快一点)。

我还应该指出,虽然您的示例只会导致错误,但如果不适当地转义字符串,您就会面临许多其他问题。看http://en.wikipedia.org/wiki/SQL_injection http://en.wikipedia.org/wiki/SQL_injection一个好的起点或以下经典xkcd漫画 http://xkcd.com/327/.

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

如何处理 SQL 中的引号 ' [重复] 的相关文章

随机推荐

  • 将数据库名称与表列表关联

    列出服务器上所有具有模式的表是没有问题的 SELECT SCHEMA NAME schema id name FROM sys tables 如何确定表驻留在哪个数据库中 sys tables 存在于所有数据库中 因此我不遵循您不知道所在数
  • jqGrid中的RowID重置,如何防止它?

    由于某种原因 一旦我从分页中执行任何操作 增加行数 移至下一页等 rowID 就会重置 例如 我总共有 75 条记录 我一次显示 15 条记录 总共我有 3 个页面 每个页面可以显示 15 条记录 当我在第一页显示 1 15 的记录时 我得
  • 如何向特定用户发送消息 Ratchet PHP Websocket

    我正在尝试构建一个系统 用户可以在建立与 websocket 服务器的连接时订阅某个类别 然后他将开始接收该类别的更新 到目前为止 我已经与 Ratchet 合作 我能够向所有连接的客户端发送消息 但问题是我不想向所有客户端发送消息 我只想
  • 一种 O(n) 时间复杂度的算法,用于在数组中查找彼此之间差异最接近的一对 no

    我得到一个不一定已排序的整数数组 我必须找到一对 no 其彼此之间的差异与数组中任何其他对 no 相比最小 时间效率应该是O n 我很确定您无法获得解决此问题的通用线性时间算法 但是 由于您有 有界 整数 因此您可以稍微作弊并从使用基数排序
  • 如何配置python+uwsgi+nginx?

    我正在尝试使用 uwsgi nginx 运行 python 脚本 它在浏览器中导致了这个错误 uWSGI Error Python application not found In var log uwsgi app pyec loc lo
  • 如何使用 PowerShell 从“应用程序和服务日志”中读取分析性 Windows 事件?

    I use Get EventLog https learn microsoft com en us powershell module microsoft powershell management get eventlog读取事件 使用
  • 如何将十六进制字符串转换为无符号字符数组?

    例如 我有一个cstring E8 48 D8 FF FF 8B 0D 包括空格 需要转换为等效的 unsigned char 数组 0xE8 0x48 0xD8 0xFF 0xFF 0x8B 0x0D 什么是有效的方法来做到这一点 谢谢
  • 使用 tsfresh 仅选择一定数量的顶级特征

    如何使用 tsfresh 选择时间序列的前 n 个特征 我可以决定要提取的主要特征的数量吗 基于 Chaitra 的上述评论和这个答案 https stackoverflow com questions 62991201 tsfresh g
  • 应用程序在调试时不会崩溃,但在正常运行时会崩溃

    系统信息 Windows 10 技术预览版 内部版本 9926 Visual Studio 社区 2013尝试调试 美国电话电报公司 Lumia 635 Windows 10 技术预览版 适用于版本 9941 的手机 带有 Lumia Cy
  • GraphQL java以json格式发送自定义错误

    我正在一个 graphql 应用程序中工作 我必须以 json 格式发送自定义错误对象 消息 无论它是出现在 servlet 还是服务中 预期错误响应 errorCode 400 error goes here errorMessage m
  • 在Ruby中通过pid获取进程状态

    有没有办法在 Ruby 中根据 PID 获取进程的子进程状态 例如 在 Python 中 您可以执行 psutil Process pid status 我不知道有一种可移植的 ruby 方法来获取正在运行的进程的进程状态 你可以做Proc
  • 无法通过 SalesForce API (JSforce) 更新自定义日期字段

    我正在使用 Node js 应用程序中的 JSforce 库来更新机会对象上的自定义日期字段 但该字段并未更新 响应表明更新成功 并且对象上的 SystemModstamp 字段已更新 但该字段仍为空 这是我正在使用的 JSforce 调用
  • 应用程序未打开时,GCM 消息未发送?

    最近我在我的应用程序上实现了 GCM 我按照这个网站上的教程代码进行操作 http javapapers com android google cloud messaging gcm for android and push notific
  • 使用 Cloud Functions for Firebase 和 @google-cloud/storage 删除图像时出现问题

    我正在尝试在 Cloud Functions for Firebase 中创建一个脚本 该脚本将对数据库事件做出反应并删除其路径位于其中一个参数 fullPath 中的图像 这是我正在使用的代码 use strict const funct
  • 将 2D numpy 数组转换为 2D numpy 矩阵

    我有一个 python 代码 其中我必须将 2D 数组转换为 2D 矩阵 以便我可以使用它来计算逆 为此 我正在使用 numpy matrix array 但它不起作用 谁能告诉我如何将 2D 数组转换为 numpy 矩阵 该数组由所有浮点
  • 我开始使用诊断 CSS 样式表 例如http snipplr com view 6770 css diagnostics highlight deprecated html with css more http snipplr com vi
  • 将羊驼导入 React.js

    我正在尝试在 React 应用程序中使用羊驼形式 import React useEffect useRef from react import from jquery import as popper from popper js imp
  • TextView 中的行号、代码突出显示

    我正在为 Android 开发一个 IDE 它对于编辑短脚本 对文件进行快速调整可能很有用 目前我只使用一个简单的 EditText 但我想添加几个功能 例如 EditText 左侧的行编号和代码突出显示 有人对如何解决这个问题有任何建议吗
  • Laravel 4 - 容器类:共享函数和闭包逻辑

    我对这里讨论的问题有一个后续问题 Laravel 核心方法混乱 https stackoverflow com questions 15758936 laravel core method confusion 17295616 172956
  • 如何处理 SQL 中的引号 ' [重复]

    这个问题在这里已经有答案了 我有一个数据库 其中包含 John Doe 等姓名 不幸的是 其中一些姓名包含引号 例如 Keiran O Keefe 现在 当我尝试搜索此类名称时 如下所示 SELECT FROM PEOPLE WHERE S