PDO 更新不替换准备好的语句中的占位符[重复]

2023-11-25

我正在尝试使用以下代码更新表格。如果我改变WHERE temp_booking_id = ':temp_booking_id'");使用实际的当前会话temp_id,查询将运行,但将占位符添加到表中(例如:签出)作为值。

$data保留正确的值,但不替换占位符。

盯着这个问题好几个小时了,我一生都无法找出问题所在,环顾四周但没有找到解决方案。

PDOStatement:errorInfo()正在返回

PDOStatement::errorInfo(): 数组 ( [0] => 00000 )

如果我删除占位符周围的引号,它会返回

PDOStatement::errorInfo(): 数组 ( [0] => HY093 )

有任何想法吗?

try {
  $data = array(
    'temp_booking_id' => $_SESSION['temp_id'],
    'check_in' => $in,
    'check_out' => $out, 
    'adults' => $a,
    'children1' => $c1,
    'children2' => $c2,
    'infants' => $i,
    'cots' => $c,
    'promo_code' => $pc
 );

 $STH = $DBH->prepare("UPDATE b_temp_booking 
   SET check_in = ':check_in',
   check_out = ':check_out',
   adults = ':adults',
   children1 = ':children1',
   children2 = ':children2',
   infants = ':infants',
   cots = ':cots',
   promo_code = ':promo_code' 
   WHERE temp_booking_id = ':temp_booking_id'");

 $STH->execute($data);

 echo "\nPDOStatement::errorInfo():\n";
 $arr = $STH->errorInfo();
 print_r($arr);

} catch(PDOException $e) {
  echo 'ERROR: ' . $e->getMessage();
}

嗯,看来你的 SQL 语句不需要单引号。例如,您可以尝试运行此块:

   $STH = $DBH->prepare("UPDATE b_temp_booking 
   SET check_in = :check_in,
   check_out = :check_out,
   adults = :adults,
   children1 = :children1,
   children2 = :children2,
   infants = :infants,
   cots = :cots,
   promo_code = :promo_code 
   WHERE temp_booking_id = :temp_booking_id");

查看有关 PDO 准备语句的 PHP 手册:http://www.php.net/manual/en/pdo.prepared-statements.php看起来这里命名占位符周围不需要引号。

另外,请尝试遵循他们使用 bindParam() 方法的示例:

$STH->bindParam(':temp_booking_id', $temp_booking_id);

$temp_booking_id = $_SESSION['temp_id']; // Not sure how binding the environment variable will work, so decoupling it.

$STH->bindParam(':check_in', $in);
$STH->bindParam(':check_out', $out); 
$STH->bindParam(':adults', $a);
$STH->bindParam(':children1', $c1);
$STH->bindParam(':children2', $c2);
$STH->bindParam(':infants', $i);
$STH->bindParam(':cots', $c);
$STH->bindParam(':promo_code', $pc);

当您准备好执行时,可以运行以下行:

$STH->execute();

检查一下,看看绑定参数是否是您想要的。

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

PDO 更新不替换准备好的语句中的占位符[重复] 的相关文章

  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法

随机推荐

  • 在 Django 模型字段中存储二进制哈希值

    我有一个二十字节的十六进制哈希值 我想将其存储在 django 模型中 如果我使用文本字段 它会被解释为 unicode 并且返回乱码 目前我正在对其进行编码和解码 这确实使代码变得混乱 因为我必须能够通过它进行过滤 def get cha
  • .Net core 2.0 中不支持 log4net AdoNetAppender?

    我正在实施 log4netAdoNetAppender in ASP NET核心2 0 但我猜它不支持 我已经实现了log4net滚动文件附加器在 core 2 0 中 它使用 log4 net 配置成功运行 那么 如果log4net Ad
  • 使用 Cygwin 编译 C++

    如何在 Cygwin 中编译我的 C 程序 我已经安装了gcc 我应该使用什么命令 另外 当控制台应用程序位于 cpp 扩展名中时 如何运行它 我正在尝试使用一些小程序来学习 C 但在 Visual C 中 我不想为每个小 cpp 文件创建
  • 会话是否使用cookie?

    这是一个月前的面试题 会话是否使用cookie 如果是这样 他们是如何做到的 Assume Session UserId 1这个会话变量在内部如何使用cookie 如果是这样 cookie 的名称是什么以及该 cookie 的值是什么 虽然
  • 如何在c中创建二维数组并使用指针和函数显示它? [关闭]

    Closed 这个问题是无关 目前不接受答案 我正在尝试编写 2 个函数 一个用于读取矩阵 二维数组 另一个用于将其打印出来 到目前为止我有 Read a matrix allocate space read elements return
  • 异常对象的生命周期

    我想知道异常对象是如何创建的 为什么处理函数参数可以是非常量引用 例如 class E public const char error E const char arg error arg cout lt lt Constructor of
  • 为什么 Gunicorn 使用端口 8000/8001 而不是 80?

    我忙于使用 Gunicorn 作为 Django 服务 和 NGINX 作为反向代理 为 Django 框架设置开发环境 当我看几个教程时像这样一和this one 我看到他们使用端口 8000 和端口 8001 http 127 0 0
  • 如何在 JavaScript 中检查某个值是否存在于某个数组索引处?

    这是否可以用于测试位置值是否有效index存在与否 或者有没有更好的方法 if arrayName index do stuff 从概念上讲 JavaScript 中的数组包含array length元素 从array 0 直到 为止arr
  • 在Android中运行USSD代码并将应用程序保持在第一位置

    我正在 Android 中创建一个应用程序 需要在后台运行 USSD 代码 无需在后台发送我的申请 每当我使用 Intent ACTION CALL 运行 USSD 时 String ussdCode 123 Uri encode star
  • 将值附加到地图 golang 内部的数组

    我正在尝试将值附加到地图内的数组 var MyMap map string Example type Example struct Id int Name string 这是我尝试过的 但我无法指向示例的对象来附加到数组 package m
  • 如何从 UIElementCollection 中选择一个属性 = 某个值的子元素?

    我有一个UniformGrid与一些Button s as Children Each Button has a Tag带有 ID 例如 简化代码 MyUniformGrid Children Add new Button Margin n
  • 预加载图像

    有没有办法只使用 html css 预加载图像 是的你可以 有很多关于这个主题的教程 这是其中之一
  • C# 代码中 where 子句的混淆

    public interface ICrudService
  • Google PlusOne 按钮在 Chrome 上出现错误

    Google PlusOne 在 Chrome 上出现错误 Uncaught ReferenceError iframes is not defined fastbutton 19 Uncaught ReferenceError ifram
  • 如何使用 window.open 设置文件名

    我正在尝试下载由 JavaScript 计算的临时结果 假设我有一个字符串str 我想下载一个文件包含str并将其命名为data csv 我使用以下代码 window open data text csv charset utf 8 str
  • 多线程环境下的文件访问策略(Web App)

    我有一个文件 它是从 Web 服务获取并在 Web 应用程序中本地缓存的一些数据的 XML 表示形式 这个想法是这个数据是very静态的 但只是might改变 因此 我将其设置为缓存到一个文件 并在其上放置一个监视器以检查它是否已被删除 删
  • C# 使用 System.Linq 错误

    为什么 使用 System Linq 可能会导致以下错误 类型或命名空间名称 Linq 确实 命名空间 System 中不存在 参考System Core 然后还有其他人也合并了这个命名空间 但这是主要的在 Net 3 5 及更高版本上 如
  • ADT 插件无法安装:缺少要求:Android 开发工具

    我尝试在 eclipse helios windows 64 位经典上安装 ADT 插件 我收到这个错误 无法完成安装 因为找不到一项或多项所需的项目 正在安装的软件 Android开发工具16 0 1 v201112150204 2385
  • SQL Server 将字符串转换为日期时间

    这并不是询问如何在 MSSQL 中将任意字符串转换为日期时间 例如这个问题 我可以控制字符串格式 但我想知道使用日期字符串更新日期时间字段的 MSSQL 语法是什么 UPDATE MyTable SET MyDate CONVERT dat
  • PDO 更新不替换准备好的语句中的占位符[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下代码更新表格 如果我改变WHERE temp booking id temp booking id 使用实际的当前会话temp id 查询将运行 但将占位符添加到表中 例如 签出 作为值 dat