算法没有填充数组

时间:2013-06-06 20:16:14

标签: php arrays

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

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

有人能让我知道我做错了吗?

<?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);

3 个答案:

答案 0 :(得分:2)

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

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

这可以取代你的while循环。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我认为应该是:

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

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