Annotation of embedaddon/php/ext/mysqli/tests/mysqli_stmt_bind_result_zerofill.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: mysqli_stmt_bind_result() - 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 (!($stmt = mysqli_prepare($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: $result = null;
! 36: if (!mysqli_stmt_bind_result($stmt, $result)) {
! 37: printf("[%03d] Bind failed, [%d] %s\n",
! 38: mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 39: return false;
! 40: }
! 41:
! 42: if (!mysqli_stmt_execute($stmt) || !mysqli_stmt_fetch($stmt)) {
! 43: printf("[%03d] Execute or fetch failed, [%d] %s\n",
! 44: mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));
! 45: return false;
! 46: }
! 47:
! 48: $res = mysqli_stmt_result_metadata($stmt);
! 49: $meta = mysqli_fetch_fields($res);
! 50: mysqli_stmt_free_result($stmt);
! 51:
! 52: $meta = $meta[0];
! 53: $length = $meta->length;
! 54: if ($length > strlen($insert)) {
! 55:
! 56: $expected = str_repeat('0', $length - strlen($insert));
! 57: $expected .= $insert;
! 58: if ($expected !== $result) {
! 59: printf("[%03d] Expecting '%s' got '%s'\n", $offset, $expected, $result);
! 60: return false;
! 61: }
! 62:
! 63: } else if ($length <= 1) {
! 64: printf("[%03d] Length reported is too small to run test\n", $offset);
! 65: return false;
! 66: }
! 67:
! 68:
! 69: return true;
! 70: }
! 71:
! 72: /*
! 73: We map those to PHP numeric types -
! 74: no padding/filling done. Neither with libmysql nor with mysqlnd.
! 75: zerofill(2, $link, 'TINYINT');
! 76: zerofill(3, $link, 'SMALLINT');
! 77: zerofill(4, $link, 'MEDIUMINT');
! 78: zerofill(5, $link, 'INT');
! 79: zerofill(6, $link, 'INTEGER');
! 80: zerofill(7, $link, 'BIGINT');
! 81: zerofill(8, $link, 'FLOAT');
! 82: zerofill(9, $link, 'DOUBLE');
! 83: zerofill(10, $link, 'DOUBLE PRECISION');
! 84: */
! 85: zerofill(11, $link, 'DECIMAL');
! 86: zerofill(12, $link, 'DEC');
! 87:
! 88: mysqli_close($link);
! 89:
! 90: print "done!";
! 91: ?>
! 92: --CLEAN--
! 93: <?php
! 94: require_once("clean_table.inc");
! 95: ?>
! 96: --EXPECTF--
! 97: done!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>