使用下面的脚本,我试图执行两个查询,将每个存储过程的输出存储在两个数组中。
第一个数组正在填充数据,而第二个数组则保持为空。但是,如果我编辑脚本只处理第二个存储过程,这可以正常工作。
有人能让我知道我做错了吗?
<?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);
答案 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;
}