-1

使用下面的脚本,我试图执行两个查询,将每个存储过程的输出存储在两个数组中。

第一个数组正在填充数据,而第二个数组保持为空。但是,如果我编辑脚本以仅处理第二个存储过程,则可以正常工作。

任何人都可以让我知道我做错了什么吗?

<?php

$host = 'xxx.xxx.xxx.xxx';
$user = 'xxxx';
$password = '';
$dbName = 'xxxxx';

$dbh = new PDO("mysql:host=$host;dbname=$dbName", $user, $password);

if (!$dbh)
{
    die("Error While Connecting to Database");
}

$query1 = 'CALL getRowSet1';
$query2 = 'CALL getRowSet2';

try
{
    $rowSet1 = $dbh->prepare($query1);
    $rowSet1->execute();
    $rowSet2 = $dbh->prepare($query2);
    $rowSet2->execute();
}
catch (PDOException $e)
{
    echo $e->getMessage();
    die();
}

$results_1 = array();
$results_2 = array();

while ($result1 = $rowSet1->fetch(PDO::FETCH_ASSOC))
{
    $results_1[] = $result;
}

while ($result2 = $rowSet2->fetch(PDO::FETCH_ASSOC))
{
    $results_2[] = $result;
}

var_dump($results_1, $results_2);
4

3 回答 3

2

为什么不直接使用pdo::fetchAll方法呢?

$results_1 = $rowSet1->fetchAll(PDO::FETCH_ASSOC);
$results_2 = $rowSet2->fetchAll(PDO::FETCH_ASSOC);

这可以代替您的两个 while 循环。

于 2013-06-06T20:27:51.190 回答
0

您的第二个 while 循环将 $result 而不是 $result2 附加到 $results_2

于 2013-06-06T20:23:06.050 回答
0

我认为应该是:

while ($result1 = $rowSet1->fetch(PDO::FETCH_ASSOC))
{
    $results_1[] = $result1;
}

while ($result2 = $rowSet2->fetch(PDO::FETCH_ASSOC))
{
    $results_2[] = $result2;
}
于 2013-06-06T20:23:36.560 回答