Skip to content

Commit 5b60370

Browse files
mysqli_query throws warning despite using silenced error mode (#9842)
1 parent db28ee8 commit 5b60370

File tree

3 files changed

+81
-4
lines changed

3 files changed

+81
-4
lines changed

ext/mysqli/mysqli.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,7 @@ PHP_METHOD(mysqli_result, __construct)
10431043
}
10441044

10451045
if (!result) {
1046+
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
10461047
RETURN_FALSE;
10471048
}
10481049

ext/mysqli/mysqli_nonapi.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -701,8 +701,7 @@ PHP_FUNCTION(mysqli_query)
701701
break;
702702
}
703703
if (!result) {
704-
php_mysqli_throw_sql_exception((char *)mysql_sqlstate(mysql->mysql), mysql_errno(mysql->mysql),
705-
"%s", mysql_error(mysql->mysql));
704+
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
706705
RETURN_FALSE;
707706
}
708707

@@ -935,8 +934,7 @@ PHP_FUNCTION(mysqli_reap_async_query)
935934
}
936935

937936
if (!result) {
938-
php_mysqli_throw_sql_exception((char *)mysql_sqlstate(mysql->mysql), mysql_errno(mysql->mysql),
939-
"%s", mysql_error(mysql->mysql));
937+
MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql);
940938
RETURN_FALSE;
941939
}
942940

ext/mysqli/tests/gh9841.phpt

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
--TEST--
2+
Bug GH-9841 (mysqli_query throws warning despite using silenced error mode)
3+
--SKIPIF--
4+
<?php
5+
require_once 'skipif.inc';
6+
require_once 'skipifconnectfailure.inc';
7+
?>
8+
--FILE--
9+
<?php
10+
11+
require_once 'connect.inc';
12+
13+
mysqli_report(MYSQLI_REPORT_OFF);
14+
15+
$mysqli = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
16+
17+
$mysqli->query("SELECT (
18+
SELECT 1 AS val
19+
UNION ALL
20+
SELECT 2
21+
) FROM dual");
22+
23+
$mysqli->query("SELECT (
24+
SELECT 1 AS val
25+
UNION ALL
26+
SELECT 2
27+
) FROM dual", MYSQLI_ASYNC);
28+
$mysqli->reap_async_query();
29+
30+
$mysqli->real_query("SELECT (
31+
SELECT 1 AS val
32+
UNION ALL
33+
SELECT 2
34+
) FROM dual");
35+
$result = new mysqli_result($mysqli);
36+
37+
// now make sure the errors are thrown when not using silent mode
38+
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
39+
40+
try {
41+
$mysqli->query("SELECT (
42+
SELECT 1 AS val
43+
UNION ALL
44+
SELECT 2
45+
) FROM dual");
46+
} catch (mysqli_sql_exception $e) {
47+
echo $e->getMessage()."\n";
48+
}
49+
50+
$mysqli->query("SELECT (
51+
SELECT 1 AS val
52+
UNION ALL
53+
SELECT 2
54+
) FROM dual", MYSQLI_ASYNC);
55+
try {
56+
$mysqli->reap_async_query();
57+
} catch (mysqli_sql_exception $e) {
58+
echo $e->getMessage()."\n";
59+
}
60+
61+
$mysqli->real_query("SELECT (
62+
SELECT 1 AS val
63+
UNION ALL
64+
SELECT 2
65+
) FROM dual");
66+
try {
67+
$result = new mysqli_result($mysqli);
68+
} catch (mysqli_sql_exception $e) {
69+
echo $e->getMessage()."\n";
70+
}
71+
72+
print "done!";
73+
?>
74+
--EXPECTF--
75+
Subquery returns more than 1 row
76+
Subquery returns more than 1 row
77+
Subquery returns more than 1 row
78+
done!

0 commit comments

Comments
 (0)