【发布时间】:2010-12-13 14:49:17
【问题描述】:
我有一个包含多个结果集的存储过程。如何进入 mysqli 中的第二个结果集以获得这些结果?
假设它是一个存储过程,例如:
create procedure multiples( param1 INT, param2 INT )
BEGIN
SELECT * FROM table1 WHERE id = param1;
SELECT * FROM table2 WHERE id = param2;
END $$
PHP 是这样的:
$stmt = mysqli_prepare($db, 'CALL multiples(?, ?)');
mysqli_stmt_bind_param( $stmt, 'ii', $param1, $param2 );
mysqli_stmt_execute( $stmt );
mysqli_stmt_bind_result( $stmt, $id );
那么这是我无法工作的部分。我尝试使用 mysqli_next_result 移动到下一个结果集,但无法让它工作。我们确实让它与 mysqli_store_result 和 mysqli_fetch_assoc/array/row 一起工作,但由于某种原因,所有整数都作为空白字符串返回。
还有其他人遇到过这个问题并有解决方案吗?
【问题讨论】:
-
过程调用是否使用 mysqli_multi_query() 而不是准备好的语句正确返回?
-
哦,对不起。我的第一反应是没有正确阅读您的评论。我们需要使用准备好的语句,但是查询是正确的并且适用于第一个结果集。我只是不知道如何将其推进到第二个结果集。
标签: php stored-procedures mysqli resultset