xref: /PHP-7.4/ext/mysqli/tests/bug66124.phpt (revision e3e67b72)
1--TEST--
2Bug #66124 (mysqli under mysqlnd loses precision when bind_param with 'i')
3--SKIPIF--
4<?php
5require_once('skipif.inc');
6require_once('connect.inc');
7require_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
23require_once('connect.inc');
24
25if (!$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);
35if (!$stmt) {
36    printf("Can't prepare\n");
37    exit(1);
38}
39
40echo "Using 'i':\n";
41$stmt->bind_param('i', $id);
42
43if ($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
53if ($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
71echo "Using 's':\n";
72
73if ($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
82if ($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?>
93done
94--EXPECT--
95Using 'i':
96insert id:1311200011005001566=>1311200011005001566
97fetch  id:1311200011005001566
98Using 's':
99insert id:1311200011005001566
100fetch  id:1311200011005001566
101done
102