首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

PHP_PDO 调用存储过程,返回参数有关问题

2013-12-07 
PHP_PDO 调用存储过程,返回参数问题$stmt $db-prepare(CALL pro_test(?,@?))$stmt-bindParam(1, $n

PHP_PDO 调用存储过程,返回参数问题

$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());

热点排行