PHP PDO + 准备语句

2024-02-20

$sql='SELECT phrase,english FROM static_site_language WHERE page=?;';
$pds=$database->pdo->prepare($sql); $pds->execute(array($_POST['languagepage']));

上面的代码运行良好。但是我需要将另一个变量放入准备语句中。我已尝试以下方法,但似乎不起作用:

$sql='SELECT phrase,? FROM static_site_language WHERE page=?;';
$pds=$database->pdo->prepare($sql); $pds->execute(array($_POST['language'],$_POST['languagepage']));

我知道 $_POST['language'] (通过打印)仅包含“english”一词。 是否可以在选择的这一部分中放置一个准备变量?

thx


查询参数只能代替常量值——不能代替列名。

所有列和表都必须在您命名时命名prepare查询时,您不能将选择列推迟到后续执行步骤。

当您希望用户输入确定列名称时,请使用白名单地图将用户输入限制为有效选择。映射数组的键是合法的用户输入。映射数组的值是您要在 SQL 查询中使用的字符串,在本例中是列名称。

$lang_col_map = array(
  "DEFAULT" => "english",
  "en"      => "english",
  "es"      => "spanish"
);
$lang_col = $lang_col_map[ $_POST["language"] ] ?: $lang_col_map[ "DEFAULT" ];

$sql='SELECT phrase,$lang_col FROM static_site_language WHERE page=?;';
$pds=$database->pdo->prepare($sql); 
$pds->execute(array($_POST['languagepage']));

这样您就可以确保只有 $lang_col_map 中的值可以成为 SQL 查询的一部分,并且如果用户尝试在 http 请求中发送任何棘手的内容,它会被忽略,因为它与该映射的任何键都不匹配。因此查询是安全的,不会受到 SQL 注入的影响。

看我的演示SQL 注入神话和谬误 http://www.slideshare.net/billkarwin/sql-injection-myths-and-fallacies了解更多信息。

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

PHP PDO + 准备语句 的相关文章

  • 如果文件名减去扩展名,.htaccess url 重写行为将被覆盖。与网址相同

    我正在尝试整理 URL 并从中删除 php 扩展名等 我位于网站的基本文件夹中 因此没有可以优先处理的父 htaccess 文件或其他文件 这是我的 htaccess 代码 RewriteEngine On RewriteRule give
  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

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

    我想下载使用 PHPExcel 生成的 Excel 文件 我按照以下代码PHPExcel 强制下载问题 https stackoverflow com questions 26265108 phpexcel force download i
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • 在会话 cookie 中存储大量数据会产生什么影响?

    谁能解释一下在会话中存储大量数据的缺点或给我指出一些阅读材料 我也很感兴趣在会话中存储数据和从数据文件读取数据之间是否有任何区别 如果您在会话中存储大量数据 则输入 输出性能会下降 因为会有大量读取 写入 默认情况下 PHP 中的会话存储在
  • 关于加拿大短信网关提供商的建议[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很好奇 如果我能够接受传入的短信到某个号码 然后将其传递给 PHP 中的服务器端应用程序 会带来多少麻烦 金钱 我最终会通过电子邮件地址发回短信 有
  • session_regenerate_id 没有创建新的会话 id

    我有一个脚本 旨在完成当前会话并开始新的会话 我使用了一段代码 它在我的开发计算机上运行良好 但是 当我将其发布到生产服务器时 会话 ID 始终保持不变 以下是我重新启动会话的代码 session start SESSION array P
  • Magento补丁安装失败

    从以下位置下载并运行 Magento PHP 5 4 支持补丁 Magento CE v1 7 0 0 1 7 0 2 时http www magentocommerce com download http www magentocomme
  • 使用 php 更改白天和黑夜的背景?

    我正在制作一个 tumblr 页面 我的 html 页面有两种不同的背景 我希望白天背景从早上 7 点到晚上 8 点显示 夜间背景从晚上 8 点到早上 7 点显示 我决定用 php 来做这件事 但对于 php 来说我是个新手 我的朋友给我发
  • TOMCAT 6 中的 PHP - 异常

    我一直在努力融入PHP in APACHE TOMCAT 6依照指示second answer为了QUESTION https stackoverflow com questions 779246 run a php app using t
  • php - 我应该加密电子邮件地址吗?

    当用户注册时 我应该将他们的电子邮件按原样存储在数据库中还是对其进行哈希处理 我希望稍后能够解密 那么我应该使用 md5 吗 谢谢你 No md5 is 单向哈希函数 http en wikipedia org wiki Cryptogra
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • 如何以编程方式获取 WooCommerce 中的所有产品?

    我想获取 WooCommerce 中的所有产品数据 产品 sku 名称 价格 库存数量 可用性等 我可以使用 wp query 来做到这一点吗 这样你就可以通过 wp query 获取所有产品 global wpdb all product
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • 运行PHPUnit测试时如何避免内部调用函数?以及如何设置内部性能的模拟数据?

    我有一个类 Receipt php
  • PHP 中的 Preg_replace

    我想替换 中包含的字符串中的内容content 它是多行等 preg replace 函数应该删除整个 com 没有垫子 蒙特 尝试这个 result preg replace s replacement content subject
  • CakePHP Xml 实用程序库触发 DOMDocument 警告

    我正在使用 CakePHP 在视图中生成 XMLXML核心库 http book cakephp org 2 0 en core utility libraries xml html xml Xml build data array ret
  • Zend Framework Zend_Form 装饰器: 位于按钮元素内部?

    我有一个像这样创建的按钮元素 submit new Zend Form Element Button submit submit gt setLabel My Button submit gt setDecorators array Vie
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri

随机推荐

  • 如何为数组分配排名号

    我有一个数字数组 例如 myarray 45 3 56 7 21 我需要做的是将这些值排列到另一个数组中 因此对于上述内容 我最终会得到 myarray2 4 1 5 2 3 非常感谢 Adam 好了 完整的解决方案
  • 如何将 Delphi XE 包和设置移至其他用户?

    我们已经建立了一个新的 模板 开发机器 其中包括 Delphi XE 其中包括大量第三方和内部软件包 并打算为我们团队中的开发人员制作该计算机的多个克隆 请注意 我们并不是试图绕过许可 我们在克隆后 重新 激活 注册 Windows Off
  • Mac OS下安装pygresql时出现clang错误

    我试图在 Mac OS X 10 11 3 下安装 PyGreSQL 但从 pip 和源安装时会出现相同的 clang 错误 python3 setup py install running install running bdist eg
  • 如何将所有以前的提交合并到一个提交中?

    Context 在 GitHub 上启动项目并一直在尝试 git 命令 该项目的历史是混乱的 问题 如何删除所有历史记录并将所有提交消息替换为 已上传项目源的初始版本 之类的内容 此选项将允许您保留项目的所有配置文件 git reset s
  • DataTable Linq 连接许多列

    我在使用 Linq Join 时遇到问题 我想连接 2 个表 它们具有相同的 n 列结构 我的问题是我不知道这些列的名称 那么我如何在 select new 中重写这些列 表 1 这里我有一些 ID Name 和 LastName 参数 注
  • MySql 错误:1364 字段“display_name”没有默认值

    我刚刚从 MAMP 安装切换到本机 Apache MySql 和 PHP 安装 我已经一切正常 但我已经开始在新环境中使用我的网络应用程序 突然任何 INSERT 命令都会导致以下错误 SQLSTATE HY000 一般错误 1364 字段
  • 为什么 nasm 找不到 cmake 中的 include 语句

    我正在使用一个模块化引导加载程序 我觉得设置它使用 Gas 比将 nasm 移植到 cmake 更痛苦 似乎并非如此 NAsm 无法找到包含文件 我缺少什么 完整的代码可以在这个 Github 存储库 https github com Co
  • 为什么 Google 智能锁对话框只有“从不”和“保存”两个选项,而没有“否”?

    Smart Lock 弹出对话框只有两个按钮 一个是 从不 另一个是 保存密码 如果用户不小心点击了 从不 SmartLock就会被禁用 直到他使用chrome应用程序删除 从未保存过的密码 项 这对于 懒惰用户 来说步骤太多了 而且很有可
  • 不同播放器(AVAudio Player 和 MPMusicPlayer)同时播放时是否可以使用不同的音量?

    我需要使用音频和音乐播放器为不同的播放器设置不同的音量级别 我正在播放这两个播放器 但我不知道如何设置不同的不同音量级别 谢谢你 马丹 莫汉 假设您的 avaudioplayer 名为 theAudio 要控制音量 请说 theAudio
  • Prolog二叉搜索树测试-不需要的父节点的父节点比较

    我是 Prolog 菜鸟 请记住这一点 我尝试编写一个谓词来确定某个给定术语是否是二叉搜索树 我想出了这段代码 is btree nil is btree node N L R number N is btree L is btree R
  • 在 C# 中动态获取美元对印度卢比的汇率?

    我正在开发一个 Windows 应用程序来将美元转换为印度卢比 我知道如何通过以静态方式将美元兑换为印度卢比汇率进行转换 但我希望汇率在我的只读文本框中动态可用 就像我在上图中保留的那样 在搜索 SO 后 我在 C 中找到了这个解决方案 但
  • 在 VS 2008 中为单个项目关闭 Intellisense

    我有一个包含大约 1000 个类的项目 不 没有办法方便地将这个项目分成多个 仅加载项目就需要大约 20 分钟 因为智能感知会缓慢地浏览所有类 并占用近 1GB 内存 有没有办法为单个项目关闭 Intellisense 但为解决方案中的所有
  • Java:通过 Parse.com REST API 将日期对象作为 JSONObject 发送

    我正在尝试使用 HttpsUrlConnection 通过 Parse 的 REST API 在 Parse com 数据库中创建一个新对象 他们的 REST API 只接受 JSON 我已经让一切正常工作 数据库将接受新的对象条目 除非我
  • Pip 21.1 无法导入 InvalidSchemeCombination

    在工作中 我们使用 Github 操作来构建和测试我们的 Pull 请求 然后才能获得批准 周五下午 一切都进展顺利 周一早上 所有测试都很早就失败了 错误显示 pip 无法再找到自己的异常 最新的 Pip 有什么变化吗 正如您在下面的错误
  • 在 asp.net 中的网络位置创建文件

    在我的 ASP net 应用程序中 我创建一个文本文件并将数据写入该文件 我将该文件保存在服务器上的指定位置 这是一个内联网应用程序 当我使用 Visual studio net 在本地运行应用程序时 我可以通过应用程序创建 写入文件并将其
  • 我们可以直接实例化抽象类吗? [复制]

    这个问题在这里已经有答案了 我读过我们只能通过继承来实例化抽象类 但不能直接实例化它 但是 我看到我们可以通过调用另一个类的方法来创建具有抽象类类型的对象 例如 LocationProvider是一个抽象类 我们可以通过调用来实例化它get
  • 无法获取 UWP 中 ColumnDefinitionCollection 的“Add”方法

    在 Windows 通用应用程序的上下文中 并使用反射 我试图获取Add方法从一个ColumnDefinitionCollection 内置型 所以我用这个 type GetRuntimeMethods First info gt info
  • csproj 文件中的 XML

    任何人都可以向我指出 C csproj 文件中有效的架构或属性列表吗 我看过了 但似乎找不到任何有关它的文档 你的意思是像this http msdn microsoft com en us library dd576348 aspx文档
  • Keras 干扰 python 日志记录

    我想记录一些加载到经过训练的 keras 模型中的 python 代码 由于某种原因 python 日志记录在 keras 不工作的情况下不起作用load model是进口的 但是 如果我不导入 keras python 日志记录工作正常
  • PHP PDO + 准备语句

    sql SELECT phrase english FROM static site language WHERE page pds database gt pdo gt prepare sql pds gt execute array P