在 PHP 中到处使用准备好的语句? (原产地保护)

2024-03-03

我将把在多个站点/项目中使用的数据库类从使用自定义 mysql_query 方法* 切换到使用 PDO 和准备好的语句。不过我首先有一个问题 - 我想使用准备好的语句吗到处?即使在查询只运行一次的地方?我需要做类似以下事情的情况该怎么办:

INSERT INTO `table` (`column`, `column`) VALUES ('value','value'), ('value','value'),('value','value'), etc.

我应该使用单个准备好的语句(和单个值),但每次使用不同的变量执行它,还是应该使用上面的样式?如果我确实在这里使用准备好的语句,我们所说的性能损失有多严重?在这种情况下我需要使用交易吗?

*我的 mysql_query 方法类似于用户可以调用的准备好的语句$mysql->Query("SELECT * FROM%sWHERE '%s'='%s'", $var, $var, $var),并且该方法会自动转义所有内容mysql_real_escape_string.


准备好的语句可以很好地防止 SQL 注入,并且还可以为某些类型的查询提供性能优势。就我个人而言,我会在任何地方使用它们。

如果您发现特定查询导致性能问题,您可以进行一些分析来追踪问题的原因,然后根据需要优化代码或查询。但在出现问题之前不要尝试进行微观优化。

至于交易,只需要在需要的时候使用即可。例如,当您需要执行一系列“全有或全无”更新时,如果其中一个更新失败,则整个更新都必须失败。这些对于多对多关系之类的事情很有用,其中必须更新三个表,并且您不希望在发生故障时保留部分关系。

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

在 PHP 中到处使用准备好的语句? (原产地保护) 的相关文章

  • 当用户再次访问同一页面时保持登录状态?

    目前我正在使用会话来登录用户 但是当我关闭浏览器并再次打开它时 我必须再次登录 你如何让用户在 2 周内保持登录状态 那么是通过cookie吗 那么您想要 在这台计算机上记住我 选项吗 这是一种与语言无关的方法 创建一个至少包含以下内容的数
  • 由于重复捕获组而不是捕获重复组,正则表达式不匹配

    我有以下正则表达式 A G A G 具有以下表达式 A BsCb 我期望 3 个匹配结果 A Bs Cb 但测试在https regex101 com https regex101 com 只给我最后一场比赛Cb 并告诉我重复捕获组只会捕获
  • Postgresql 的 SQL_NO_CACHE?

    MySQL 关键字是否有等效的 postgresqlSQL NO CACHE 或 SQL Serverdbcc drop clean buffers 即您可以简单地将其包含在 SQL 语句中或作为脚本的一部分吗 UPDATE 这个问题 查看
  • PHP:STR 替换为链接

    我有这个 PHP 聊天框 如果我在聊天框中键入链接 它不会将其显示为链接 我如何使用 STR 替换来执行此操作 它应该响应诸如 http http com nl www www 之类的内容 我的其他 STR 替换行如下所示 bericht
  • 匹配括号内任何字符的正则表达式

    尝试创建一个与括号内的任何字符匹配的正则表达式 我的正则表达式模式是这样的 preg match listanswer answer 括号内的所有字符串都是匹配模式 但问题是 当我尝试匹配例如 this word sample data 它
  • 如何在 Laravel 中 session_write_close() ?

    Running session write close before sleep 在 Laravel 中似乎不起作用 因为会话仍然被其他请求阻止 直到当前连接完成 我试图sleep 在 Laravel 中 不会阻止其他请求 发现 sessi
  • PHP:在多维数组中查找相同的键并合并结果

    我有一个多维数组 如下所示 array 0 gt array WS gt array id gt 2 name gt hello 1 gt array SS gt array id gt 1 name gt hello2 2 gt arra
  • 如何从 MySQL 中的布尔类型返回不同的字符串?

    如果我在 MySql 中将一列设置为布尔值 则查询将返回以下值 0 or 1 是否可以做这样的事情 SELECT bool value AS yes OR no 我的意思是 根据真假返回两个不同的字符串 SELECT CASE WHEN b
  • Symfony 学说错误“DoctrineMigrationsBundle 需要启用 DoctrineBundle。”

    我创建了一个新的 Symfony 项目 并且不断收到此消息 DoctrineMigrationsBundle 需要启用 DoctrineBundle 错误并且无法摆脱它 显然我是这个星球上唯一一个收到此错误的人 因为谷歌并没有太大帮助 在
  • 从单个 javascript 函数向两个不同的 PHP 脚本发送两个 Ajax 请求

    是否可以同时向两个或多个 Php 脚本发送 Ajax 请求 我知道这可以串行实现 从 1 获取响应 然后从另一个获取响应 但我想知道是否可以同时实现 请协助我使用以下代码 function calShowUpload if http rea
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 对更改运行 PHPUnit 测试

    每当磁盘上的文件发生更改时 我想运行 PHPUnit 测试 或至少其中的一个子集 与您可以使用 进行的操作非常相似 咕噜手表 https github com gruntjs grunt contrib watch blob master
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • 如何让Symfony2直接加载CSS、JS文件而不是通过PHP?

    老问题 请参阅下面的更新版本 我的开发环境不是最快的 每个 PHP 请求大约需要 500 毫秒 它开始成为 Symfony2 资源文件的问题 因为每个资源文件都是通过 Symfony 的内部控制器请求的 http localhost myp
  • 从文本文件 PHP 读取数据

    我只是想知道如何在 php 中读取文本文件 我想让它显示文本文件中的最后 200 个条目 每个条目都在一个新行上 Like John White Jane Does John Does Someones Name 等等 Thanks Use
  • 将单独的月、日和年值转换为时间戳

    我有月份值 1 12 日期值 1 31 和年份值 2010 2011 2012 我还有一个小时值和一个分钟值 我怎样才能把这个给strtotime 它可以以某种方式将其转换为时间戳吗 当您已经知道年月和日期时 为什么将字符串转换为日期 us
  • WooCommerce 自定义产品类型选项不隐藏自定义产品选项卡

    我刚刚向我的 WC 管理产品页面添加了自定义产品类型选项 add filter product type options this filter product type options 99 1 public function filte
  • 准备好的语句需要 0 个参数,给定 1 个参数..,使用 php 手册示例 [重复]

    这个问题在这里已经有答案了 我直接从 php 手册示例中获取了这个 它几乎与我需要的相同 但我仍然收到此错误 有人可以告诉我我错过了什么吗 stmt link gt prepare SELECT obitBody Photo FROM tn
  • 如何检查号码是否是巴基斯坦用户的手机号码而不是固定电话号码

    我所做的是从开头删除 92 或 0092 并使用以下代码检查它是否是巴基斯坦人的有效手机号码 if preg match 3 0 4 0 9 number 1 Pakistani mobile number else not a pakis
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应

随机推荐

  • 在 OpenShift(红帽云)上每 5 分钟运行一次 CRON 作业

    我试图每 5 分钟运行一次这个脚本 在 OpenShift 上运行 CRON 作业的唯一方法似乎是使用他们的 CRON 插件 而且CRON插件只允许每分钟 每小时和每天的脚本 通过将脚本放在相应的文件夹中 我尝试每 5 分钟运行一次此脚本
  • UINT_MAX 是否将所有位设置为 1?

    这个问题以前被问过 但我仍然很困惑 我知道 unsigned int a 1 将会UINT MAX 但这并不是因为所有 1 位都已设置 C11 说 如果新类型是无符号的 则通过重复添加或来转换该值 比新类型可以表示的最大值减一 直到该值在新
  • 向每个处理程序添加响应标头,而不重复同一行

    我正在编写一个小型网站 对于每个页面 我都将服务器名称添加到其标题中 func httpSignUp rw http ResponseWriter req http Request rw Header Set Server SERVER N
  • 如何使用自定义形状的 fab 按钮制作 Bottombar?

    我想制作一个带有附加 fab 按钮的底栏 如下图所示 如果有人知道那种带有 fab 底部的不同形状按钮库 请向我推荐 下面给出的图像用这样的 fab 制作了一个底栏 这只是一个可以改进代码的想法 您可以更改形状FloatingActionB
  • 如何有条件地从 .NET 集合中删除项目

    我正在尝试在 NET 中编写一个扩展方法 它将对通用集合进行操作 并从集合中删除与给定条件匹配的所有项目 这是我的第一次尝试 public static void RemoveWhere
  • 如何用 C 语言为 PIC24 编写与硬件无关的函数

    我正在编写一些实现各种功能的代码 例如 PID 控制器 信号发生器等 我的硬件提供各种输入和输出 刚才我有大量 SWITCH 语句来确定计算的源和目的地 例如 对于 PID 控制器 每 100ms 有一个开关命令 决定将哪个输入传递给 pi
  • 如何通过 PHP 发布到 Google Plus? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否已经有一个浮动的非官方 PHP 库或类 我可以使用它来发布到用户的 Google Plus
  • 如果不存在则删除表空间

    我已经编写了 pl sql 脚本 可以工作 但看起来不太好 DECLARE v exists NUMBER BEGIN SELECT count INTO v exists FROM dba tablespaces WHERE tables
  • 将结果集从 SQL 数组转换为字符串数组

    我正在查询information schema columns我的 PostgreSQL 数据库中的表 使用表名 结果集查找所有列名 类型以及是否可为空 主键 id 除外 这是正在使用的查询 SELECT column name is nu
  • C# Lambda 表达式:为什么应该使用它们?

    我很快读完了微软 Lambda 表达式 http msdn microsoft com en us library bb397687 aspx文档 不过 这种例子帮助我更好地理解 delegate int del int i del myD
  • Isabelle 返回数字而不是 Suc(Suc( ... 0 ))

    当我使用value为了找出返回自然数的函数的某个值 我总是以 0 的迭代后继函数的形式获得答案 即Suc Suc 0 有时可能很难阅读 有没有办法直接输出Isabelle返回的数字 这是我不久前想修复的问题 但显然我忘记了 卡西吉奈特的猜测
  • 如何从 C# 获取进程窗口类名?

    如何获取某个进程的窗口类名 我想在c 中实现这一点 我已经尝试过 c 中的进程类 但我只能获取进程的窗口名称 Thanks 我假设你的意思是你想获得的类名主窗口一个过程的 为此 您需要使用以下命令获取主窗口的句柄MainWindowHand
  • C中的函数调用[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 gcc 允许将参数传递给定义为不带参数的函数 https stackoverflow com questions 12643202 why does gcc allow arguments t
  • SLURM:如何在同一计算节点或不同节点上并行运行不同的可执行文件?

    Goal 了解如何通过 sbatch 作业提交来运行 共同调度或执行可执行文件 应用程序 使用 srun 或 mpirun 研究 代码片段 bin bash SBATCH job name LEBT SBATCH partition ang
  • Office 脚本(Excel 网页版)获取错误

    我正在尝试从 Web 上的 Excel 调用外部 API 但是 我一直试图从 fetch 调用中获取结果 我什至使用 Office 文档示例来确保 在 Excel 中 单击自动化以创建新脚本 async function main work
  • 按具有不同Where条件的两个字段对数据表进行分组和求和

    我有一个包含示例数据的数据表 如下所示 UserName IsBillable Hours user1 Yes 10 user2 Yes 15 user3 No 20 user1 Yes 25 user1 No 15 user2 Yes 1
  • 如何在不改变纵横比的情况下适应QGraphicsView/QGraphicsScene中的像素图查看

    我正在使用 QGraphicsView QGraphicsScene 来显示图像 图像始终以其原始大小显示 并在末端带有滚动条 我希望 QGraphicsView 根据窗口的大小自动适应图像 保持纵横比 我尝试了这个 但什么也没发生 ui
  • PHP 表单令牌的使用和处理

    我是一个用 PHP 编写登录脚本的初学者 这是我到目前为止所拥有的表单令牌声明 SESSION form token md5 rand time true 该语句是在用户表示他 她想要登录后立即发出的 我有限的理解是 令牌的目的是在唯一的时
  • 取消的 AsyncTask 挂起新的 HttpRequest

    我遇到了 asynctasks 和 http 请求的问题 用户可以按下两个不同的按钮 这两个按钮都从网络服务器下载信息 我希望这些请求可以取消 每次调用之前都会显示一个进度对话框 http请求是在异步任务中执行的 并且我在进度对话框上有一个
  • 在 PHP 中到处使用准备好的语句? (原产地保护)

    我将把在多个站点 项目中使用的数据库类从使用自定义 mysql query 方法 切换到使用 PDO 和准备好的语句 不过我首先有一个问题 我想使用准备好的语句吗到处 即使在查询只运行一次的地方 我需要做类似以下事情的情况该怎么办 INSE