我正在使用PDO数据库调用在PHP中为移动应用程序创建Web服务。问题代码如下:
// Prepare Stored Procedure Call
$query = "CALL " . $_GET['proc'] . '('.implode(', ', array_keys($paramArray)).')';
$stmt = $dbh->prepare($query);
$stmt->execute($paramArray);
$resultSets = array();
// Loop And Build Results into a JSON Array
do {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if($rows){
//echo json_encode($rows);
$resultSets[] = $rows;
}
} while ($stmt->nextRowset());
echo "Hello test.";
echo json_encode($resultSets);
while($ stmt-> nextRowset()); 在我的服务器上造成500错误,停止代码。
使用上面的代码,我得到500错误,我没有得到“Hello测试”。 echo to print,我没有得到JSON结果集,我的连接没有关闭。
如果我删除do while循环,没有500错误,我得到结果的第一行 (因为它不是循环)设置和“Hello测试”回显 连接关闭。
如果我在循环中放置 echo json_encode($ resultSets); ,我会得到JSON结果集,但是我得到了第一个结果集,然后我得到第一个和第二个完整的(基本上返回每一行,因为它循环到结果集。这是可预测的,但循环正在工作..)。
在我看过的每个其他PDO示例中,这是他们用来返回数据的循环。我在这里做错了吗?