Skip to content

Commit 79fb851

Browse files
committed
fix
1 parent 4b9034b commit 79fb851

File tree

6 files changed

+164
-62
lines changed

6 files changed

+164
-62
lines changed

tests/default/data/pdo-prepare.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public function noInferenceOnBug196(PDO $pdo, array $minorPhpVersions, \DateTime
193193
'SELECT '.implode(', ', $sumQueries).' FROM ada WHERE adaid = :package'
194194
);
195195
$stmt->execute(['package' => 'abc']);
196-
196+
197197
// this query is too dynamic for being analyzed.
198198
// make sure we don't infer a wrong type.
199199
foreach ($stmt as $row) {

tests/default/data/pdo-quote.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,34 @@ public function quote(PDO $pdo, int $i, float $f, $n, string $s, $nonE, string $
5959
public function quotedArguments(PDO $pdo, int $i, float $f, $n, string $s, $nonE, string $numericString)
6060
{
6161
$stmt = $pdo->query('SELECT email, adaid FROM ada WHERE adaid='.$pdo->quote((string) $i), PDO::FETCH_ASSOC);
62-
assertType('PDOStatement<array{email: string, adaid: int<-32768, 32767>}>', $stmt);
62+
foreach ($stmt as $row) {
63+
assertType('array{email: string, adaid: int<-32768, 32767>}', $row);
64+
}
6365

6466
$stmt = $pdo->query('SELECT email, adaid FROM ada WHERE adaid='.$pdo->quote((string) $f), PDO::FETCH_ASSOC);
65-
assertType('PDOStatement<array{email: string, adaid: int<-32768, 32767>}>', $stmt);
67+
foreach ($stmt as $row) {
68+
assertType('array{email: string, adaid: int<-32768, 32767>}', $row);
69+
}
6670

6771
$stmt = $pdo->query('SELECT email, adaid FROM ada WHERE adaid='.$pdo->quote((string) $n), PDO::FETCH_ASSOC);
68-
assertType('PDOStatement<array{email: string, adaid: int<-32768, 32767>}>', $stmt);
72+
foreach ($stmt as $row) {
73+
assertType('array{email: string, adaid: int<-32768, 32767>}', $row);
74+
}
6975

7076
$stmt = $pdo->query('SELECT email, adaid FROM ada WHERE adaid='.$pdo->quote($numericString), PDO::FETCH_ASSOC);
71-
assertType('PDOStatement<array{email: string, adaid: int<-32768, 32767>}>', $stmt);
77+
foreach ($stmt as $row) {
78+
assertType('array{email: string, adaid: int<-32768, 32767>}', $row);
79+
}
7280

7381
// when quote() cannot return a numeric-string, we can't infer the precise result-type
7482
$stmt = $pdo->query('SELECT email, adaid FROM ada WHERE adaid='.$pdo->quote($s), PDO::FETCH_ASSOC);
75-
assertType('PDOStatement<array<string, float|int|string|null>>', $stmt);
83+
foreach ($stmt as $row) {
84+
assertType('array<string, float|int|string|null>', $row);
85+
}
7686

7787
$stmt = $pdo->query('SELECT email, adaid FROM ada WHERE adaid='.$pdo->quote($nonE), PDO::FETCH_ASSOC);
78-
assertType('PDOStatement<array<string, float|int|string|null>>', $stmt);
88+
foreach ($stmt as $row) {
89+
assertType('array<string, float|int|string|null>', $row);
90+
}
7991
}
8092
}

tests/default/data/pdo-stmt-execute.php

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,34 @@ class Foo
1010
public function execute(PDO $pdo)
1111
{
1212
$stmt = $pdo->prepare('SELECT email, adaid FROM ada WHERE adaid = :adaid');
13-
assertType('PDOStatement', $stmt);
1413
$stmt->execute([':adaid' => 1]);
15-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
14+
foreach ($stmt as $row) {
15+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
16+
}
1617

1718
$stmt = $pdo->prepare('SELECT email, adaid FROM ada WHERE adaid = :adaid');
18-
assertType('PDOStatement', $stmt);
1919
$stmt->execute(['adaid' => 1]); // prefixed ":" is optional
20-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
20+
foreach ($stmt as $row) {
21+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
22+
}
2123

2224
$stmt = $pdo->prepare('SELECT email, adaid FROM ada WHERE email = :email');
23-
assertType('PDOStatement', $stmt);
2425
$stmt->execute([':email' => '[email protected]']);
25-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
26+
foreach ($stmt as $row) {
27+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
28+
}
2629

2730
$stmt = $pdo->prepare('SELECT email, adaid FROM ada WHERE adaid = ?');
28-
assertType('PDOStatement', $stmt);
2931
$stmt->execute([1]);
30-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
32+
foreach ($stmt as $row) {
33+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
34+
}
3135

3236
$stmt = $pdo->prepare('SELECT email, adaid FROM ada WHERE adaid = ? and email = ?');
33-
assertType('PDOStatement', $stmt);
3437
$stmt->execute([1, '[email protected]']);
35-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
38+
foreach ($stmt as $row) {
39+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
40+
}
3641
}
3742

3843
public function executeWithBindCalls(PDO $pdo)

tests/default/data/pdo-stmt-fetch.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ public function fetchAll(PDO $pdo)
1212
{
1313
$stmt = $pdo->prepare('SELECT email, adaid FROM ada');
1414
$stmt->execute();
15-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
15+
foreach ($stmt as $row) {
16+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
17+
}
1618

1719
// default fetch-mode is BOTH
1820
$all = $stmt->fetchAll();
@@ -53,7 +55,9 @@ public function fetch(PDO $pdo)
5355
{
5456
$stmt = $pdo->prepare('SELECT email, adaid FROM ada');
5557
$stmt->execute();
56-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
58+
foreach ($stmt as $row) {
59+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
60+
}
5761

5862
// default fetch-mode is BOTH
5963
$all = $stmt->fetch();

tests/default/data/pdo-stmt-set-fetch-mode.php

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,14 @@ public function setFetchModeNum(PDO $pdo)
1111
{
1212
$query = 'SELECT email, adaid FROM ada';
1313
$stmt = $pdo->query($query);
14-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
14+
foreach ($stmt as $row) {
15+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
16+
}
1517

1618
$stmt->setFetchMode(PDO::FETCH_NUM);
17-
assertType('PDOStatement<array{string, int<-32768, 32767>}>', $stmt);
19+
foreach ($stmt as $row) {
20+
assertType('array{string, int<-32768, 32767>}', $row);
21+
}
1822

1923
$result = $stmt->fetch(PDO::FETCH_NUM);
2024
assertType('array{string, int<-32768, 32767>}|false', $result);
@@ -24,10 +28,14 @@ public function setFetchModeAssoc(PDO $pdo)
2428
{
2529
$query = 'SELECT email, adaid FROM ada';
2630
$stmt = $pdo->query($query);
27-
assertType('PDOStatement<array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}>', $stmt);
31+
foreach ($stmt as $row) {
32+
assertType('array{email: string, 0: string, adaid: int<-32768, 32767>, 1: int<-32768, 32767>}', $row);
33+
}
2834

2935
$stmt->setFetchMode(PDO::FETCH_ASSOC);
30-
assertType('PDOStatement<array{email: string, adaid: int<-32768, 32767>}>', $stmt);
36+
foreach ($stmt as $row) {
37+
assertType('array{email: string, adaid: int<-32768, 32767>}', $row);
38+
}
3139

3240
$result = $stmt->fetch(PDO::FETCH_ASSOC);
3341
assertType('array{email: string, adaid: int<-32768, 32767>}|false', $result);
@@ -37,10 +45,14 @@ public function setFetchModeOnQuery(PDO $pdo)
3745
{
3846
$query = 'SELECT email, adaid FROM ada';
3947
$stmt = $pdo->query($query, PDO::FETCH_NUM);
40-
assertType('PDOStatement<array{string, int<-32768, 32767>}>', $stmt);
48+
foreach ($stmt as $row) {
49+
assertType('array{string, int<-32768, 32767>}', $row);
50+
}
4151

4252
$stmt->setFetchMode(PDO::FETCH_ASSOC);
43-
assertType('PDOStatement<array{email: string, adaid: int<-32768, 32767>}>', $stmt);
53+
foreach ($stmt as $row) {
54+
assertType('array{email: string, adaid: int<-32768, 32767>}', $row);
55+
}
4456

4557
$result = $stmt->fetch(PDO::FETCH_NUM);
4658
assertType('array{string, int<-32768, 32767>}|false', $result);

0 commit comments

Comments
 (0)