PHP - MySQL 从存储过程中获取输出参数的值

2023-12-10

我使用 PHP 从 PHP 调用了 MySQL 存储过程mysqli。它有一个输出参数。

$rs = $mysqli->query("CALL addNewUser($name,$age,@id)");

这里,@id 是输出参数。接下来,我触发以下查询来获取 out 参数的值:

$rs2 = $mysqli->query("SELECT @id");
while($row = $rs->fetch_object()){
    echo var_dump($row);
}

的输出var_dump如下。

object(stdClass)#5 (1) { ["@id"]=> string(6) "100026" }

所以,现在我想检索的值@id,我无法做到。我试过$row[0]->{@id}但这给出了以下错误:

PHP 致命错误:无法将 stdClass 类型的对象用作数组


或者甚至只是做一个"SELECT @id AS id" then $row->id会工作得很好。我总是重命名选择的列,以在必要时保持名称有意义:-)

顺便说一句,您可以简单地连接调用并选择 @...(使用 ; 语句分隔符),RS 将是返回值。不幸的是,这会返回一个多结果集,您需要刷新完整的结果集,否则后续查询将停止。请参阅以下示例:

$db->multi_query( "CALL addNewUser($name,$age,@id);SELECT @id as id" );
$db->next_result();            // flush the null RS from the call
$rs=$db->store_result();       // get the RS containing the id
echo $rs->fetch_object()->id, "\n";
$rs->free();

或者将 select 添加到 addNewUser 中并返回 RS 而不是 out 参数

$rs = $db->query( "CALL addNewUser($name,$age)" );
echo $rs->fetch_object()->id, "\n";
$rs->close();
$db->next_result();            // flush the null RS from the call

第一个返回多查询 (NULL, RS) 集,第二个返回 (RS, NULL) 集,因此您可以使用嵌入第一个 fetch_object() 的简单 query() 调用,但您仍然需要刷新 RS 堆栈。

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

PHP - MySQL 从存储过程中获取输出参数的值 的相关文章

  • 在 php 中为类自动生成 getter 和 setter 的最佳方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我经常创建一个包含一些私有变量的类 当设置此类的实例时 应该可以使用 getter 和 setter 填充该类的所有变量 有没有一种简单的方法可
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 条消息列表。使用emitter.setMaxListeners()来增加限制

    我知道这可能会标记为重复的解决方案 但堆栈溢出的解决方案对我不起作用 Problem node 5716 MaxListenersExceededWarning Possible EventEmitter memory leak detec
  • 删除行导致锁超时

    当我尝试从表中删除行时 我不断收到这些错误 这里的特殊情况是我可能同时运行5个进程 该表本身是一个 Innodb 表 约有 450 万行 我的 WHERE 子句中使用的列没有索引 其他指数按预期运行 这是在事务中完成的 首先删除记录 然后插
  • PHP严格标准:声明应该兼容

    我有以下类层次结构 class O Base class O extends O Base abstract class A Abstract public function save O Base obj class A extends
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 使用 SSL 证书验证 Web 浏览器

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

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

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

    现在 我有一个名为 Members 的表 其中包含内容 分为联系人数据 银行数据 现在 管理员应该能够创建 更新 删除用户 这些用户保存在另一个表中 该表只能访问管理员 用户应该获得自己的 mysql 用户帐户 管理员还应该能够设置权限 例
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 初始化 2D 对象数组时出现空指针异常 [Java]

    我正在尝试制作 2D 图块游戏 在制作保存图块的数组时 我收到 NullPointerException 这里是一些代码 抱歉 如果格式不正确 第一次 公开课世界 holds data for where to place images a
  • 有任何代码/库可以缩小 UIImage 吗?

    是否有任何代码或库可以帮助我缩小图像 如果你用iPhone拍照 它的像素大约是2000x1000 这对网络不太友好 我想将其缩小为 480x320 有什么提示吗 这就是我正在使用的 效果很好 我肯定会关注这个问题 看看是否有人有更好 更快的
  • Ember — 观察记录的创建/删除

    假设我有 2 组独立的控制器 模型 Dog and Cat 现在 每当我创建新的Cat记录 或删除现有的 我想要Dog控制器观察记录的创建 删除以及新记录的创建 删除Cat记录已创建我希望它触发一些操作 例如console log Bark
  • JOINS、EXISTS 或 IN 哪个更好?关于SQL的几个问题

    我有几个关于 SQL 的问题 如何分析一个人的表现 询问 任何内置软件 MSSQL Server 2005 2008 的功能 应该用什么来代替in在查询中这样性能更好 例如 选择 来自查询 课程 在哪里 查询 ID 输入 从查询中选择 en
  • 如何从 otf 或 ttf 文件获取字体名称?

    我在之前的应用程序中使用了自定义字体 文件名是 ProximaNova Regular otf 并加载我刚刚使用的字体 UIFont fontWithName ProximaNova Regular size 20 这非常有效 现在在这个新
  • java jaxb 是如何工作的?

    只是好奇 jaxb 是如何工作的 我有一个注释如下的类 XmlRootElement name MyJaxb Class MyJaxb XmlElement protected String str public void setStr S
  • 如何获取.NET Core 2.0中登录用户的用户ID?

    我使用 NET Core 和 MVC 创建了一个 Angular 2 应用程序 我想知道用户的登录ID 如何在 net core中获取用户的登录ID 这是我的第一个角度应用程序 我使用以下链接开始https blogs msdn micro
  • 通过增强现实寻找餐馆和旅游景点

    在我的应用程序中 我想使用增强现实来查找家庭餐馆等地方 我想要做的是 当我启动应用程序时 相机打开 然后我想找到相机方向的位置 例如 我启动应用程序 我面向东方 手机键盘面向我 即西方 然后是东方向的地方 我已经编写了一些启动相机的代码 请
  • 如何正确地将事件附加到jqGrid“列选择器”的“关闭对话框”?

    我在正确使用 jqGrid 的列选择器插件 小部件的关闭对话框事件时遇到一些问题 这就是我所拥有的 我从 jqGrid 初始化开始 最后附加了列选择器 如下所示 ticketsTable tableWrap jqGrid url datat
  • ASP.NET MVC - 服务器软件要求?

    我今天刚刚了解了 asp net mvc 我想知道服务器端需要什么来托管它 我想是 IIS 6 及更新版本 和 NET 3 5 您还需要什么吗 来自 MSDN 如何 部署 ASP NET MVC 应用程序 基本上你需要 NET 3 5 Sy
  • RoR 4 中带有验证的正则表达式

    有如下代码 class Product lt ActiveRecord Base validates title description image url presence true validates price numericalit
  • 将 Identity 2.0 函数移至存储库类

    我在我的应用程序中使用 Identity 2 0 并希望将数据功能移动到存储库层 例如以下代码 public class ApplicationDbInitializer DropCreateDatabaseIfModelChanges
  • 如何避免列表之间出现双边框?

    我正在使用列表视图 其中有一个引用可绘制 列表的 xml 如下所示
  • 如何启动 Android GCM 令牌刷新?

    根据docs 保护客户端应用程序和应用程序服务器免受潜在恶意攻击 重复使用注册token 应定期发起token 从服务器刷新 当 GCM 注册令牌刷新时 从服务器端启动 客户端应用程序必须处理 tokenRefreshed 消息与 GCM
  • 如何正确启动 Angular Universal 到实时服务器

    我通过修改此处找到的通用启动器种子来设置和工作网站 https github com angular universal starter我已经让我的网站在 localhost 节点服务器上工作 呈现 HTML 现在我已经安装了 SSH 连接
  • jQuery fullCalendar 和 qTip

    我正在考虑使用 fullCalendar 并使用 qTip 使用 eventMouseover 显示描述 有没有人设法做到这一点或知道解决方案 我已经谷歌搜索并尝试实施这个帖子但我没有任何快乐 我唯一一次让它工作时它陷入了循环并导致我的浏览
  • 可选择注入内容脚本

    内容脚本可以通过在扩展清单文件中声明以编程方式或永久注入 程序注入需要主机权限 通常由浏览器或页面操作授予 在我的用例中 我想注入 gmail outlook com 和 yahoo 邮件网站 而无需用户操作 我可以通过声明所有这些清单来做
  • 在 C++ 中以编程方式设置 Firemonkey 控件字体

    我有一个自定义 Firemonkey 控件 它扩展了TEdit这是在表单上动态创建的 我试图在创建它时设置它的字体大小 Search gt Font gt Size 15 但是 控件上的字体保持不变 我有另一个相同类型的控件 该控件已经在表
  • 在 CF.NET 中创建大位图时出现 OutOfMemoryException

    我的紧凑框架应用程序通过将所有项目渲染到大位图表面 然后将该位图复制到屏幕上的偏移位置 以便仅显示适当的项目来创建平滑滚动列表 旧版本仅渲染当时应该出现在屏幕上的项目 但这种方法对于平滑滚动界面来说太慢了 最初创建大位图时 它偶尔会生成 O
  • PHP - MySQL 从存储过程中获取输出参数的值

    我使用 PHP 从 PHP 调用了 MySQL 存储过程mysqli 它有一个输出参数 rs mysqli gt query CALL addNewUser name age id 这里 id 是输出参数 接下来 我触发以下查询来获取 ou