Annotation of embedaddon/php/ext/mysqli/tests/mysqli_fetch_assoc_zerofill.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: mysqli_fetch_assoc() - ZEROFILL
                      3: --SKIPIF--
                      4: <?php
                      5: require_once('skipif.inc');
                      6: require_once('skipifemb.inc');
                      7: require_once('skipifconnectfailure.inc');
                      8: ?>
                      9: --FILE--
                     10: <?php
                     11:        require_once('connect.inc');
                     12:        require_once('table.inc');
                     13: 
                     14:        function zerofill($offset, $link, $datatype, $insert = 1) {
                     15: 
                     16:                mysqli_query($link, 'ALTER TABLE test DROP zero');
                     17:                $sql = sprintf('ALTER TABLE test ADD zero %s UNSIGNED ZEROFILL', $datatype);
                     18:                if (!mysqli_query($link, $sql)) {
                     19:                        // no worries - server might not support it
                     20:                        return true;
                     21:                }
                     22: 
                     23:                if (!mysqli_query($link, sprintf('UPDATE test SET zero = %s', $insert))) {
                     24:                        printf("[%03d] UPDATE failed, [%d] %s\n",
                     25:                                $offset, mysqli_errno($link), mysqli_error($link));
                     26:                        return false;
                     27:                }
                     28: 
                     29:                if (!($res = mysqli_query($link, 'SELECT zero FROM test LIMIT 1'))) {
                     30:                        printf("[%03d] SELECT failed, [%d] %s\n",
                     31:                                $offset, mysqli_errno($link), mysqli_error($link));
                     32:                        return false;
                     33:                }
                     34: 
                     35:                $row = mysqli_fetch_assoc($res);
                     36:                $meta = mysqli_fetch_fields($res);
                     37:                mysqli_free_result($res);
                     38:                $meta = $meta[0];
                     39:                $length = $meta->length;
                     40:                if ($length > strlen($insert)) {
                     41: 
                     42:                        $expected = str_repeat('0', $length - strlen($insert));
                     43:                        $expected .= $insert;
                     44:                        if ($expected !== $row['zero']) {
                     45:                                printf("[%03d] Expecting '%s' got '%s'\n", $offset, $expected, $row['zero']);
                     46:                                return false;
                     47:                        }
                     48: 
                     49:                } else if ($length <= 1) {
                     50:                        printf("[%03d] Length reported is too small to run test\n", $offset);
                     51:                        return false;
                     52:                }
                     53: 
                     54:                return true;
                     55:        }
                     56: 
                     57:        zerofill(2, $link, 'TINYINT');
                     58:        zerofill(3, $link, 'SMALLINT');
                     59:        zerofill(4, $link, 'MEDIUMINT');
                     60:        zerofill(5, $link, 'INT');
                     61:        zerofill(6, $link, 'INTEGER');
                     62:        zerofill(7, $link, 'BIGINT');
                     63:        zerofill(8, $link, 'FLOAT');
                     64:        zerofill(9, $link, 'DOUBLE');
                     65:        zerofill(10, $link, 'DOUBLE PRECISION');
                     66:        zerofill(11, $link, 'DECIMAL');
                     67:        zerofill(12, $link, 'DEC');
                     68: 
                     69:        mysqli_close($link);
                     70: 
                     71:        print "done!";
                     72: ?>
                     73: --CLEAN--
                     74: <?php
                     75:        require_once("clean_table.inc");
                     76: ?>
                     77: --EXPECTF--
                     78: done!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>