$stmt = $db->prepare("CALL pro_test(?,@?)");$stmt->bindParam(1, $name);$stmt->bindParam(2, $return_value, PDO::PARAM_STR, 4000);// 插入一行$name = '成都市';$stmt->execute ();print_r($return_value);

调用存储过程,返回参数怎么是空的,么有,查看数据库,已经成功添加了数据,

直接在数据库中执行

SET @n = -1;

CALL pro_test("啊是打算",@n);

select @n;

返回的都是正确的参数

回复讨论(解决方案)

调用存储过程时,数据库可能返回多个结果集

依次是:基本的 select 的结果,存储过程1的结果,存储过程2的结果 ....

你的 SQL 指令这是 CALL pro_test(?,@?) 没有 select 所以只能位于第二个结果集

如果写作 select CALL pro_test(?,@?) 就位于第一结果集了

当然环境十多变的,你也确实不能准确的知道结果集会摆在哪里

于是就需要循环读取do { $rows = $stmt->fetchAll(PDO::FETCH_NUM); if ($rows) { print_r($rows); } } while ($stmt->nextRowset());

调用存储过程时,数据库可能返回多个结果集

依次是:基本的 select 的结果,存储过程1的结果,存储过程2的结果 ....

你的 SQL 指令这是 CALL pro_test(?,@?) 没有 select 所以只能位于第二个结果集

如果写作 select CALL pro_test(?,@?) 就位于第一结果集了

当然环境十多变的,你也确实不能准确的知道结果集会摆在哪里

于是就需要循环读取do { $rows = $stmt->fetchAll(PDO::FETCH_NUM); if ($rows) { print_r($rows); } } while ($stmt->nextRowset());

按照你说的,在sql前加上 select, 执行后查看数据库没有任何执行结果,不加之前都能成功添加数据,并且没有报错。

去掉select,能添加数据,但是 print_r($stmt->fetchAll(PDO::FETCH_NUM)); 返回的结果是Array ( )

,不怎么懂,希望能讲解

你在数据库管理器中都要SET @n = -1;CALL pro_test("啊是打算",@n);select @n;

执行3条指令

那么在 php 中就怎么简化成 1 条了呢

你在数据库管理器中都要SET @n = -1;CALL pro_test("啊是打算",@n);select @n;

执行3条指令

那么在 php 中就怎么简化成 1 条了呢

那么在PHP中应该怎么写?查了很多资料,PHP.net 中的demo都是错的· 头都打了

你在数据库管理器中都要SET @n = -1;CALL pro_test("啊是打算",@n);select @n;

执行3条指令

那么在 php 中就怎么简化成 1 条了呢

想通了

$stmt = $db->prepare("CALL pro_test(?,@sp_result);");$stmt->bindParam(1, $name);;$stmt->execute ();$outputArray = $db->query("select @sp_result")->fetch(PDO::FETCH_ASSOC);

谢谢思路

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php pdo 存储过程的返回所有结果,PHP_PDO 调用存储过程,返回参数问题相关推荐

  1. 网络斗地主游戏的完整设计与实现(三)入口存储过程详解,理解动态调用存储过程的原理

    引言 在前一篇文章中说到了一个核心技术路线,就是在js代码中通过ajax请求调用sqlserver中的存储过程. 下面对这一个调用过程在数据库端的工作过程做一个较为详细的说明.因为这里用到了在存储过程 ...

  2. java异步调用数据库存储过程详解,java中如何调用存储过程

    create procedure getsum @n int =0 as declare @sum int declare @i int set @sum=0 set @i=0 while @i 在线 ...

  3. Oracle 存储过程的创建,及触发器调用存储过程

    一.创建存储过程 1.存储过程写法 create or replace procedure HVM_BYQ_TJ--变压器统计信息--->入库 (id in number) as beginfo ...

  4. Oracle ORA-06861: 文字与格式字符串不匹配 记录两次无助的遭遇:存储过程直接执行正常,java调用存储过程则报错

    一天之内,出现了两次这样的尴尬遭遇:将参数直接放到存储过程中执行时,程序运行正常,但是通过java程序去调用数据库存储过程时,就抛出异常.我和我的同事分别遇到了一次,但是,原因却大不相同. 先说说我的 ...

  5. oracle 返回list,myabatis oracle 调用存储过程返回list结果集

    Mapper.xml 配置 call pro_emp(#{emps,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=emp ...

  6. oracle怎么定时执行存储过程6,Oracle中如何定时调用存储过程

    创建测试表 SQL>   create   table   a(a   date); 表已创建. 创建一个自定义过程 SQL>   create   or   replace   proc ...

  7. mysql 视图调用存储过程,是否可以在视图中调用存储过程?

    A similar question about sql-server has been asked here. I'm wondering if its possible in MySql. edi ...

  8. java 调用存储过程 无效的列索引_JAVA 调用存储过程报错 java.sql.SQLException: 无效的列索引...

    报错信息java.sql.SQLException:无效的列索引atoracle.jdbc.driver.OracleCallableStatement.registerOutParameterInt ...

  9. ASP调用存储过程详解。

    ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过.我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那么回事.对于简单的应用,这些资 ...

最新文章

  1. HarmonyOS Text超出部分末尾显示...
  2. Query理解在美团搜索中的应用
  3. oracle 条件动态视图,oracle最重要的9个动态性能视图
  4. 「文本信息抽取与结构化」目前NLP领域最有应用价值的子任务之一
  5. python 之三级菜单
  6. python 三数之和
  7. 蓝桥杯java第七届决赛第四题--路径之谜
  8. VTK修炼之道49:图形基本操作进阶_网格平滑(点云的曲面重建技术)
  9. 2.4.5 MySQL InnoDB重做与回滚介绍
  10. 查找linux所有目录中包含字符,Linux查找目录下包含有某字符串的全部文件
  11. SAP OData服务性能测量的几种工具和手段
  12. 重写description方法
  13. 魔兽争霸显示无法登录服务器,魔兽登陆不上去_网络一切正常,但是魔兽世界就是登不上去...
  14. 龙卷风路径_龙卷风的目录
  15. linux操作系统期末试卷及答案,Linux操作系统期末复习题(含答案).pdf
  16. Kata Container是什么?
  17. IntelliJ IDEA CE 2019.2 发布
  18. 软件园三区VR虚拟漫游实训项目规划
  19. apicloud (第五篇 bmap百度地图一键回到当前位置)
  20. 艾默生质量流量计传感器安装

热门文章

  1. ObservableScrollView实现
  2. PHPExcel导出excel 复制代码
  3. .net操作xml小结 (转)
  4. 转:android学习帖子大汇集
  5. MySQL数据库进阶(API的理解、Python对MySQL的接口)
  6. python爬取苏州天气并用excel来保存
  7. svr预测出来是一条直线_不看错过好几亿!5分钟学会用Python预测美股价格
  8. centos8离线安装Apache_疯狂Hive之Hivean安装部署与交互方式(一)
  9. catia func 三菱后处理_20款三菱帕杰罗V97奢华SUV 津港促销价_搜狐汽车
  10. Python+matplotlib绘制海螺贝壳上美丽的线条