我是php的新手。我正在调用存储过程,该过程在MYSQL中返回多个结果集。
我似乎无法让PHP PDO获得第二个结果集。我只得到第一个。任何帮助都是适用的
- 更多信息
存储过程只是选择这样的语句
select * from Product where productId = id;
select url from Images where product_id = id;
PHP代码:
$conn = new PDO('mysql:host=localhost;dbname=salamancju_HardGraft', $this->userName, $this->password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$stmt = $conn -> prepare('call GetProductById(:id)');
$stmt->execute( array(':id' => $id));
$results = array();
do {
$results = $results + $stmt->fetchAll(PDO::FETCH_NUM);
} while ($stmt->nextRowset());
echo json_encode($results);
答案 0 :(得分:0)
您的问题与存储过程无关。 数组上的+运算符不是你想象的那样。改为使用[]:
do {
$results[] = $stmt->fetchAll(PDO::FETCH_NUM);
} while ($stmt->nextRowset());
将生成一个嵌套数组。如果您想要其他格式,请提供示例。
除此问题外,您的代码也很完美。大多数不熟悉PHP的人都无法做到这一点。