SQLSTATE[HY093]:参数号无效:参数未定义

2024-01-23

我使用 Yii 的活动记录模式已经有一段时间了。现在,我的项目需要访问不同的数据库来进行一项小事务。我认为 Yii 的 DAO 对此很有帮助。但是,我遇到了一个神秘的错误。

CDbCommand 执行 SQL 语句失败:SQLSTATE[HY093]:参数号无效:参数未定义

这是我的代码:

public function actionConfirmation
{
    $model_person = new TempPerson();

    $model = $model_person->find('alias=:alias',array(':alias'=>$_GET['alias']));
    $connection=Yii::app()->db2;
            $sql = "INSERT INTO users (username, password, ssn, surname
                    , firstname, email, city, country) 
                    VALUES(:alias, :password, :ssn, :surname
                    , :firstname, :email, :city, :country)";
            $command=$connection->createCommand($sql);
            $command->bindValue(":username", $model->alias);
            $command->bindValue(":password", substr($model->ssn, -4,4));
            $command->bindValue(":ssn", $model->ssn);
            $command->bindValue(":surname", $model->lastName);
            $command->bindValue(":firstname", $model->firstName);
            $command->bindValue(":email", $model->email);
            $command->bindValue(":city", $model->placeOfBirth);
            $command->bindValue(":country", $model->placeOfBirth);
            $command->execute();
            $this->render('confirmation',array('model'=>$model));
}

这将构造以下查询(如应用程序日志中所示):

INSERT INTO users (username, password, ssn, surname, firstname, email
                   , city, country) 
VALUES(:alias, :password, :ssn, :surname, :firstname, :email, :city, :country);

FYI $model->placeOfBirth应该是城市和县的值。这不是一个错字(只是我必须做的一件愚蠢的事情)。


只是提供一个答案 - 因为这个错误很常见 - 以下是一些原因:

  1. The :parameter名称与绑定错误不匹配(拼写错误?)。这就是这里发生的事情。他们有:alias在SQL语句中,但绑定:username。因此,当尝试绑定参数时,Yii/PDO 无法找到:username在sql语句中,这意味着它是“一个参数短”并引发错误。

  2. 完全忘记添加bindValue()为一个参数。这在 Yii 其他结构中更容易做到,比如$critera,其中有一个数组或参数($criteria->params = array(':bind1'=>'test', ':bind2'=>'test)).

  3. 另一个可能的原因是占位符名称中的字符无效 https://stackoverflow.com/questions/5809951/pdo-valid-characters-for-placeholders

  4. 使用时与 CDataProvider 分页和/或排序发生奇怪的冲突together and joins。没有具体、简单的方法来描述这一点,但是当在 CDataProviders 中使用复杂查询时,我遇到了奇怪的问题,参数被删除并发生此错误。

在 Yii 中解决这些问题的一种非常有用的方法是启用参数记录 http://www.yiiframework.com/doc/api/1.1/CDbConnection#enableParamLogging-detail在你的配置文件中。将其添加到您的db配置文件中的数组:

'enableParamLogging'=>true,

并确保CWebLogRoute路线已设置在您的log部分。这将打印出给出的查询和错误,以及它尝试绑定的所有参数。超级有帮助!

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

SQLSTATE[HY093]:参数号无效:参数未定义 的相关文章

  • jQuery ajax 调用包含重音字符的 url 将错误的 Uri 从 IE 发送到服务器

    我在使用 IE 发送包含重音字符的 url 时遇到问题 这是一个简单的函数 function runjQueryTest var url test Beyonc get url function 在服务器 PHP 上我记录了请求uri的值
  • 是否可以将路由参数传递给 Laravel 中的控制器构造函数?

    是否可以将路由参数 或路由段 注入到控制器构造函数中 您找到一些代码来澄清我的问题 class TestController protected param public function construct paramFromRoute
  • 您的要求无法解析为 laravel 的一组可安装软件包

    我使用 5 7v Laravel 和 7 2 1v PHP 和 Composer 最新版本 但是当我想创建新项目时出现这些错误 Your requirements could not be resolved to an installabl
  • 如何将ElasticSearch与MySQL集成?

    在我的一个项目中 我计划将 ElasticSearch 与 MySQL 结合使用 我已经成功安装ElasticSearch 我可以单独管理ES中的索引 但我不知道如何用 MySQL 实现同样的功能 我读过一些文件 但我有点困惑 没有明确的想
  • Xdebug V3 不会停止 VSCode 中的断点

    我正在尝试使用 VSCode 在 XAMPP 上进行调试 但没有成功 我知道有很多关于这个的问题 我已经尽了一切努力 但仍然行不通 我的 xdebug 扩展确实有一件奇怪的事情 我目前使用 PHP v7 4 12 和 Xdebug 版本 3
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • 在哪里可以学习网络编程从入门到精通? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我尝试做教程 但它是无组织且无结构的 我在哪里可以学习 PHP 从初学者到大师 我正在寻找类似的网站w
  • 分页显示所有其他页面上第 1 页的相同帖子

    我最近在创建即将发生的事件列表时得到了很多帮助 请参阅此处显示即将举行的活动 包括今天的活动 https stackoverflow com questions 17343615 showing upcoming events includ
  • PHP 中标头的使用

    非常简单的问题 这两个 PHP 版本 5 标头调用中哪一个是 最好的 header Not Modified true 304 header HTTP 1 1 304 Not Modified 我很确定第一个是最多价的 但只是好奇如果在 H
  • 在 foreach 中使用 QueryPath 的多个查找

    我正在使用 QueryPath 和 PHP 这发现 eventdate 没问题 但不会为 dtstart 返回任何内容 qp htmlqp url foreach qp gt find table schedule gt find tr a
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • Facebook API sdk 4.0 - 将照片发布到 Facebook

    我正在尝试创建一个应用程序 用户可以在其中浏览照片并将其从计算机提交到 Facebook 为此 他们首先必须将照片上传到服务器 然后使用 Facebook 请求将此图像发布到 Facebook 我正在使用多部分 表单数据 这就是我到目前为止
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 从 Laravel 4 输入生成新数组

    我使用 Input all 从动态生成的表单中获取一些输入 我使用 jQuery 来允许用户添加字段 字段名称为 first names last names 和 emails input 变量现在看起来像这样 array size 4 t
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • 如何在 PHP 5.6 中通过 php.ini 设置“verify_peer_name=false”SSL 上下文选项

    案例 我想打开 SSL 连接localhost而 SSL 证书是 FQDN 的问题 问题 没有进行特殊处理就行 下面的程序失败并显示以下消息 PHP Warning stream socket enable crypto Peer cert

随机推荐

  • JQuery Ajax Post 导致 500 内部服务器错误

    我正在尝试执行此 AJAX 帖子 但由于某种原因我收到服务器 500 错误 我可以看到它在控制器中遇到了断点 所以问题似乎出在回调上 任何人 ajax type POST url InlineNotes Note ashx id notei
  • 在 Angular 中使用 bigint 文字时模块解析失败

    我正在开展一个个人项目来尝试学习 Angular 框架 我目前是它的新手 但我已经设法 我认为 包含javascriptbigint在打字稿中正确输入数字 通过在 tsconfig json 文件中定位 esnext 版本 因为这工作正常
  • Bootstrap 轮播上的动画高度变化 (v2.3.2)

    我正在尝试使用 Bootstrap 的轮播来处理高度不同的内容 高度会根据浏览器宽度而有所不同 并且轮播下方有内容 我想使用 CSS 来动画幻灯片之间的高度变化 在朋友的帮助下 我几乎可以在 FireFox 中实现此功能 第一张幻灯片跳转
  • 从 Cognito 触发器发送消息

    我想限制用户从 Cognito 托管的 UI 登录 我可以看到有触发器可以附加 lambda 但是每当我更改 lambda 内部的事件对象时 而不是获取自定义消息User exceeded limits I get unrecognizab
  • 如何像屏保一样改变CAGradientLayer的颜色?

    我被创造了UIView与申请CAGradientLayer颜色效果如我所附图片所示 现在 我想像屏幕保护程序一样平滑地改变它的渐变颜色从上到下的变化 我已经尝试过使用NStimer有点完成了 但它的颜色在改变CAGradientLayer看
  • 智能 JVM 和 JIT 微优化

    随着时间的推移 Sun 的 JVM 和 JIT 已经变得相当智能 过去作为必要的微优化而成为常识的事情不再需要 因为它会为您处理好 例如 过去的情况是 您应该将所有可能的类标记为 Final 以便 JVM 内联尽可能多的代码 然而现在 JI
  • C# 线程,WaitHandle.WaitAll

    是否可能不使用 WaitHandle WaitAll waitHandles 阻止 winForm 而只是设置另一个线程 当从 WaitHandle WaitAll 获取 complate 信号时将触发该线程 我不会使用WaitHandle
  • 使用 JavaScript 从对象中递归删除属性和值的最快方法是什么?

    我需要找到最快的方法来删除所有 meta对象的属性及其值 例如 part one name My Name something 123 meta test test123 part two name name dob dob meta so
  • Android PDF页面转图像api

    有没有可能的方法将 pdf 转换为图像并在图像视图上显示它们 PDF 不是由图像组成 而是由矢量组成 T Couple 开源 Java PDF 到图像转换器 例如 http www jpedal org http www jpedal or
  • 当所述列的值为 NULL 时,我在可空列上使用 JSON_extract 函数的 where 语句是否得到确认?

    我有一个 where 语句 其中包含 JSON extract 方法 JSON extract 使用一个名为的可为空列new value or old value 如果列包含 JSON 字符串 则该检查有效 但当列为 NULL 时 wher
  • jsf/primefaces 在 bean 初始化期间加载指示器

    在我的 JSF Primefaces 项目中 我在 bean 的 init 构造后 方法中加载了大量数据 这就是为什么我想在 Bean 加载期间显示 gif 指示器 我尝试使用 primefaces 和 Ajax 状态 展示的程序化版本 h
  • 无需 Web 界面即可在 Drupal 中切换主题

    我正在学习 php 和创建主题 不幸的是 当我编辑当前在 drupal 中使用的主题时 我在主题中犯了一个错误 即使我点击 drupal index php 也不会再显示任何内容 我想将损坏的 drupal 主题更改为可用的主题 但我无法这
  • Angular ngFor ngIF 通过管道过滤数据的条件

    ngFor 基于使用管道的搜索进行过滤 这工作正常 现在我必须根据搜索查询添加 ngIf 条件 如果没有任何结果 那么我必须显示另一个带有 无数据 文本的新 div
  • 设置STS但在web应用程序中保留formsauthentication

    我正在现有的网络应用程序上启用 Windows 身份基础 我希望尽可能少地干扰现有代码 因此我希望登录页面使用应用程序中留下的表单验证 并且如果用户通过特定页面 例如 im comming from some other site aspx
  • 使用 CDK 创建自定义 AWS IAM 策略

    根据文档 https docs aws amazon com cdk api latest docs aws cdk aws iam Policy html https docs aws amazon com cdk api latest
  • 验证 C 程序的输入

    我有一个 C 程序 其中接受 2 个数字作为输入 如何验证输入的内容是否仅为数字而不是字符 void main int a b printf Enter two numbers scanf d d a b printf Number 1 i
  • 将 IronPython 嵌入到我的 C# 应用程序中的最佳方式是什么?

    我有一个由非常精通技术的人使用的应用程序 他们想要可编程性的小岛 所以我使用了嵌入式 Iron Python 然而 自 IronPython 2 0 Eval 起不再起作用 具体来说 我无法同时加载模块和注入局部变量 有一个解决办法 我仍然
  • 如何查询Win32_PerfFormattedData_Tcpip_NetworkInterface中的特定适配器?

    如何查询特定适配器 最好基于 IP 地址 Win32 PerfFormattedData Tcpip NetworkInterface 我花了一段时间谷歌搜索这个问题 但没有找到解决方案 我尝试使用Win32 NetworkAdapter
  • 如何在Python程序中处理操作系统信号?

    我正在编写一个 python 程序 它通过无限 while 循环从队列中读取数据 我如何处理操作系统 键盘中断 CTRL C 发送的信号以打破 while 循环并关闭活动连接和文件并优雅地退出程序而不是终止进程 while True rea
  • SQLSTATE[HY093]:参数号无效:参数未定义

    我使用 Yii 的活动记录模式已经有一段时间了 现在 我的项目需要访问不同的数据库来进行一项小事务 我认为 Yii 的 DAO 对此很有帮助 但是 我遇到了一个神秘的错误 CDbCommand 执行 SQL 语句失败 SQLSTATE HY