103 lines
3.2 KiB
PHP
103 lines
3.2 KiB
PHP
--TEST--
|
|
invalid precision and sizes for parameters.
|
|
--SKIPIF--
|
|
<?php require('skipif.inc'); ?>
|
|
--FILE--
|
|
<?php
|
|
sqlsrv_configure( 'WarningsReturnAsErrors', 0 );
|
|
sqlsrv_configure( 'LogSeverity', SQLSRV_LOG_SEVERITY_ALL );
|
|
|
|
require( 'MsCommon.inc' );
|
|
|
|
$conn = Connect();
|
|
if( !$conn ) {
|
|
FatalError( "sqlsrv_create failed." );
|
|
}
|
|
|
|
$stmt = sqlsrv_prepare( $conn, "IF OBJECT_ID('test_precision_size', 'U') IS NOT NULL DROP TABLE test_precision_size" );
|
|
sqlsrv_execute( $stmt );
|
|
sqlsrv_free_stmt( $stmt );
|
|
|
|
$stmt = sqlsrv_prepare( $conn, "CREATE TABLE test_precision_size (id tinyint, varchar_type varchar(8000), decimal_type decimal(38,19)" );
|
|
sqlsrv_execute( $stmt );
|
|
sqlsrv_free_stmt( $stmt );
|
|
|
|
$f1 = 1;
|
|
$f2 = "testtestte";
|
|
$f3 = 12.0;
|
|
|
|
// test an invalid size for a varchar field (8000 max)
|
|
$stmt = sqlsrv_query( $conn, "INSERT INTO test_precision_size (id, varchar_type, decimal_type ) VALUES (?, ?, ?)",
|
|
array( $f1, array( $f2, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_VARCHAR(9000)), $f3 ));
|
|
if( $stmt !== false ) {
|
|
die( "sqlsrv_query should have failed." );
|
|
}
|
|
else {
|
|
print_r( sqlsrv_errors() );
|
|
}
|
|
|
|
// test an invalid precision where precision > than max allowed (38)
|
|
$stmt = sqlsrv_query( $conn, "INSERT INTO test_precision_size (id, varchar_type, decimal_type ) VALUES (?, ?, ?)",
|
|
array( $f1, array( $f2, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_VARCHAR(8000)), array( $f3, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_DECIMAL( 40, 0 ))));
|
|
if( $stmt !== false ) {
|
|
die( "sqlsrv_query should have failed." );
|
|
}
|
|
else {
|
|
print_r( sqlsrv_errors() );
|
|
}
|
|
|
|
// test an invalid precision where the scale > precision
|
|
$stmt = sqlsrv_query( $conn, "INSERT INTO test_precision_size (id, varchar_type, decimal_type ) VALUES (?, ?, ?)",
|
|
array( $f1, array( $f2, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_VARCHAR(8000)), array( $f3, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_DECIMAL( 15, 30 ))));
|
|
if( $stmt !== false ) {
|
|
die( "sqlsrv_query should have failed." );
|
|
}
|
|
else {
|
|
print_r( sqlsrv_errors() );
|
|
}
|
|
|
|
sqlsrv_query( $conn, "DROP TABLE test_precision_size" );
|
|
|
|
sqlsrv_close( $conn );
|
|
?>
|
|
--EXPECT--
|
|
Array
|
|
(
|
|
[0] => Array
|
|
(
|
|
[0] => IMSSP
|
|
[SQLSTATE] => IMSSP
|
|
[1] => -31
|
|
[code] => -31
|
|
[2] => An invalid size or precision for parameter 2 was specified.
|
|
[message] => An invalid size or precision for parameter 2 was specified.
|
|
)
|
|
|
|
)
|
|
Array
|
|
(
|
|
[0] => Array
|
|
(
|
|
[0] => IMSSP
|
|
[SQLSTATE] => IMSSP
|
|
[1] => -31
|
|
[code] => -31
|
|
[2] => An invalid size or precision for parameter 3 was specified.
|
|
[message] => An invalid size or precision for parameter 3 was specified.
|
|
)
|
|
|
|
)
|
|
Array
|
|
(
|
|
[0] => Array
|
|
(
|
|
[0] => IMSSP
|
|
[SQLSTATE] => IMSSP
|
|
[1] => -31
|
|
[code] => -31
|
|
[2] => An invalid size or precision for parameter 3 was specified.
|
|
[message] => An invalid size or precision for parameter 3 was specified.
|
|
)
|
|
|
|
)
|