如何检查是否启用CLIENT_MULTI_RESULTS或如何启用它

问题描述 投票:0回答:1

我需要一个存储过程中的多个结果集示例:

DROP PROCEDURE IF EXISTS my_sp;
CREATE PROCEDURE my_sp(
    IN wanted VARCHAR(255)
)
BEGIN

    SET @results = 0;
    SET @wanted = wanted;

    SET @query = "
        SELECT * FROM table1
        WHERE my_column = ?
    ";
    PREPARE stmt FROM @query;
    EXECUTE stmt USING @wanted; 
    SELECT FOUND_ROWS() INTO @results;
    DEALLOCATE PREPARE stmt;

    IF( @results < 5 ) THEN
        SET @query = "
            SELECT * FROM table2
            WHERE my_column = ?
        ";
        PREPARE stmt FROM @query;
        EXECUTE stmt USING @wanted;
        DEALLOCATE PREPARE stmt;    
    END IF;

END;

在我的本地主机中,我具有MySQL 5.7和PHP 7.1,具有PDO并可以按预期工作:我可以看到多个结果集,例如:

do {
    $results = $conn->fetchAll(PDO::FETCH_ASSOC);
    print_r($results); //here I can see multiple results
} while ($conn->nextRowset());

问题:

我的主机具有MySQL 5.6版本和PHP 7.1,但是我只有一个结果集。

因此,我认为未启用CLIENT_MULTI_RESULTS

我尝试使用SHOW VARIABLES,但没有使用CLIENT_MULTI_RESULTS,结果>]

我需要从一个存储过程中获得多个结果集,例如:如果存在my_sp,则执行DROP PRODEDURE。创建过程my_sp(IN想要的VARCHAR(255))开始设置@results = 0; SET @wanted = ...

php mysql stored-procedures pdo
1个回答
0
投票

根据手册LIENT_MULTI_RESULTS应启用

© www.soinside.com 2019 - 2024. All rights reserved.