Skip to content

Commit 4a1c9be

Browse files
committed
Fix for Bug #66124 (mysqli under mysqlnd loses precision when bind_param with 'i')
1 parent b902a25 commit 4a1c9be

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

ext/mysqli/tests/bug66124.phpt

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
--TEST--
2+
Bug #66124 (mysqli under mysqlnd loses precision when bind_param with 'i')
3+
--SKIPIF--
4+
<?php
5+
require_once('skipif.inc');
6+
require_once('connect.inc');
7+
require_once('skipifconnectfailure.inc');
8+
?>
9+
--FILE--
10+
<?php
11+
$table_drop = "DROP TABLE IF EXISTS `bug66124`";
12+
$table_create = "CREATE TABLE `bug66124` (
13+
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
14+
PRIMARY KEY (`id`)
15+
) ENGINE=InnoDB DEFAULT CHARSET=utf8";
16+
17+
$table_insert = "INSERT INTO `bug66124` SET `id`=?";
18+
$table_select = "SELECT * FROM `bug66124`";
19+
$table_delete = "DELETE FROM `bug66124`";
20+
$id = '1311200011005001566';
21+
22+
23+
require_once('connect.inc');
24+
25+
if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
26+
printf("Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
27+
$host, $user, $db, $port, $socket);
28+
exit(1);
29+
}
30+
31+
$link->query($table_drop);
32+
$link->query($table_create);
33+
34+
$stmt = $link->prepare($table_insert);
35+
if (!$stmt) {
36+
printf("Can't prepare\n");
37+
exit(1);
38+
}
39+
40+
echo "Using 'i':\n";
41+
$stmt->bind_param('i', $id);
42+
43+
if ($stmt->execute()){
44+
echo "insert id:{$id}=>{$stmt->insert_id}\n";
45+
} else {
46+
printf("Can't execute\n");
47+
exit(1);
48+
}
49+
50+
51+
$result = $link->query($table_select);
52+
53+
if ($result){
54+
while ($row = $result->fetch_assoc()) {
55+
echo "fetch id:{$row['id']}\n";
56+
}
57+
} else {
58+
printf("Can't select\n");
59+
exit(1);
60+
}
61+
62+
$stmt->close();
63+
64+
$link->query($table_drop);
65+
$link->query($table_create);
66+
67+
68+
$stmt = $link->prepare($table_insert);
69+
$stmt->bind_param('s', $id);
70+
71+
echo "Using 's':\n";
72+
73+
if ($stmt->execute()){
74+
echo "insert id:{$id}\n";
75+
} else{
76+
printf("Can't execute\n");
77+
exit(1);
78+
}
79+
80+
$result = $link->query($table_select);
81+
82+
if ($result){
83+
while ($row = $result->fetch_assoc()) {
84+
echo "fetch id:{$row['id']}\n";
85+
}
86+
} else {
87+
printf("Can't select\n");
88+
exit(1);
89+
}
90+
91+
$link->close();
92+
?>
93+
done
94+
--EXPECTF--
95+
Using 'i':
96+
insert id:1311200011005001566=>1311200011005001566
97+
fetch id:1311200011005001566
98+
Using 's':
99+
insert id:1311200011005001566
100+
fetch id:1311200011005001566
101+
done

0 commit comments

Comments
 (0)