”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何解决 PHP 准备语句数据库更新中参数顺序不正确的问题?

如何解决 PHP 准备语句数据库更新中参数顺序不正确的问题?

发布于2024-11-08
浏览:520

How to Resolve Incorrect Parameter Order in PHP Prepared Statement Database Updates?

用于数据库更新的 PHP 准备语句

本次讨论的重点是如何正确利用 PHP 中的准备语句来防止 SQL 注入等漏洞。相关代码块的目的是使用准备好的语句更新具有单个字段的数据库表。

在提供的代码中,class.Scripts.inc 文件中的 update() 方法使用准备好的语句语句尝试更新数据转储表。但是,由于bind_param()方法期间参数顺序不正确,执行不成功。当前代码按照 $id 和 $content 的顺序绑定参数,而 SQL 语句期望它们以相反的顺序,导致记录标识不正确并且影响零行。

下面更正的代码纠正了这个问题通过以正确的顺序绑定参数并提供额外的错误处理来防止错误:

$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?");
/* Always check whether the prepare() succeeded */
if ($stmt === false) {
    trigger_error($this->mysqli->error, E_USER_ERROR);
    return;
}

$id = 1;
/* Bind our params */
/* Bind variables in the same order as SQL params */
$stmt->bind_param('si', $content, $id);

/* Set our params */
/* No escaping needed when using prepared statements */
$content = $_POST['content'] ?: '';

/* Execute the prepared Statement */
$status = $stmt->execute();
/* Always check whether the execute() succeeded */
if ($status === false) {
    trigger_error($stmt->error, E_USER_ERROR);
}

printf("%d Row inserted.\n", $stmt->affected_rows);

关于您的具体查询:

  1. 您遇到的“0 Rows Inserted”消息是由于到相反的参数顺序。 id和content参数绑定的顺序不正确,导致WHERE子句匹配不到任何行。
  2. 更新表时,只修改需要的字段是可以接受的。表中其他列保持不变。
版本声明 本文转载于:1729512196如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-04-30
  • 在Axios请求中自动包含Cookie的设置方法
    在Axios请求中自动包含Cookie的设置方法
    在Axios请求中自动化cookie包含 在使用AXIOS从客户端向服务器提出请求时,通常需要将cookie发送到这些请求中。在不手动添加它们的情况下,您可能会遇到困难在服务器代码中访问这些cookie,如提供的示例所示,尽管在express.js中使用了cookieparser中间件。启用此属性...
    编程 发布于2025-04-30
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-04-30
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-04-30
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-04-30
  • 在JavaScript中如何获取实际渲染的字体,当CSS字体属性未定义时?
    在JavaScript中如何获取实际渲染的字体,当CSS字体属性未定义时?
    Accessing Actual Rendered Font when Undefined in CSSWhen accessing the font properties of an element, the JavaScript object.style.fontFamily and objec...
    编程 发布于2025-04-30
  • 在Python中如何检测字符串中的特定字符?
    在Python中如何检测字符串中的特定字符?
    在使用字符串工作时检测字符串的特定字符的特定字符,检查其内容是必不可少的。其中一个方面涉及验证字符串是否包含特定字符。在Python 2中,有多种完成此任务的方法。方法1:在运算符 如果在s::$”中使用。 #做一些方法2:使用find()方法另一个选项是find()方法。如果在字符串中找...
    编程 发布于2025-04-30
  • Java中如何使用观察者模式实现自定义事件?
    Java中如何使用观察者模式实现自定义事件?
    在Java 中创建自定义事件的自定义事件在许多编程场景中都是无关紧要的,使组件能够基于特定的触发器相互通信。本文旨在解决以下内容:问题语句我们如何在Java中实现自定义事件以促进基于特定事件的对象之间的交互,定义了管理订阅者的类界面。以下代码片段演示了如何使用观察者模式创建自定义事件: args)...
    编程 发布于2025-04-30
  • 如何在JavaScript对象中动态设置键?
    如何在JavaScript对象中动态设置键?
    在尝试为JavaScript对象创建动态键时,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正确的方法采用方括号: jsobj ['key''i] ='example'1; 在JavaScript中,数组是一...
    编程 发布于2025-04-30
  • Java HashSet去重邮箱地址的终极指南
    Java HashSet去重邮箱地址的终极指南
    在java 中,您的目标是从存储在文件中的一系列地址中删除重复的电子邮件。您可以使用设置数据结构来实现此目的: 在提供的代码,数组,中用于存储电子邮件。但是,要消除重复项,您可以利用 class。 hashset是一个唯一元素的集合。当您将元素添加到已经存在的标签时,它不会再次添加。此属性使其非...
    编程 发布于2025-04-30
  • Java为何无法创建泛型数组?
    Java为何无法创建泛型数组?
    通用阵列创建错误 arrayList [2]; JAVA报告了“通用数组创建”错误。为什么不允许这样做?答案:Create an Auxiliary Class:public static ArrayList<myObject>[] a = new ArrayList<myO...
    编程 发布于2025-04-30
  • Go pprof输出为何损坏,尽管应用正常运行?
    Go pprof输出为何损坏,尽管应用正常运行?
    在使用“ PPROF”工具进行prof for prof 此问题的原因通常位于命令语法中,以调用“ pprof”。具体来说,命令需要将二进制的路径介绍为第二个参数,在某些情况下可能缺少二进制的参数。 解决问题,请确保二进制路径包含在命令中。正确的语法应该看起来像这样:[&& && && && pp...
    编程 发布于2025-04-30
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-04-30
  • 如何在无序集合中为元组实现通用哈希功能?
    如何在无序集合中为元组实现通用哈希功能?
    在未订购的集合中的元素要纠正此问题,一种方法是手动为特定元组类型定义哈希函数,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    编程 发布于2025-04-30
  • 解决MySQL错误1153:数据包超出'max_allowed_packet'限制
    解决MySQL错误1153:数据包超出'max_allowed_packet'限制
    mysql错误1153:故障排除比“ max_allowed_pa​​cket” bytes 更大的数据包,用于面对阴谋mysql错误1153,同时导入数据capase doft a Database dust?让我们深入研究罪魁祸首并探索解决方案以纠正此问题。理解错误此错误表明在导入过程中接...
    编程 发布于2025-04-30

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3