From:             david at sickmiller dot com
Operating system: CentOS 5.8
PHP version:      5.3.18
Package:          MSSQL related
Bug Type:         Feature/Change Request
Bug description:I don't think the mssql_min_error_severity() function works as 
it should.

Description:
------------
Hi,

I don't think the mssql_min_error_severity() function works as it should. 
At a minimum, the one example in the manual does not make sense
(http://www.php.net/function.mssql-min-error-severity#refsect1-function.mssql-min-error-severity-examples).

The example uses a SQL statement with a syntax error.  Regardless of what
you set mssql_min_error_severity to, a syntax error is always going to
trigger both (a) a PHP Warning and (b) a false return value from
mssql_query().  This behavior contradicts the comment above
mssql_min_error_severity(1);.  Also, since the code checks the return value
from mssql_query(), it's most likely the user will want to use @ to
suppress the PHP Warning but that is not shown in the example.

Here's an example that at least shows the mssql_min_error_severity()
function doing something:

<?php
mssql_connect($host, $user, $pass);
mssql_select_db($dbname);
mssql_min_error_severity(16);
mssql_min_message_severity(16);
// This SQL has a severity 16 error -- subquery returns multiple rows
$query = mssql_query('SELECT *, (select error from master.dbo.sysmessages)
as bad_subquery from master.dbo.sysmessages');
// Prints:
//   PHP Warning:  mssql_query(): message: Subquery returned more than 1
value. This is not permitted when the subquery follows =, !=, <, <= , >, >=
or when the subquery is used as an expression. (severity 16)
//   PHP Warning:  mssql_query(): General SQL Server error: Check messages
from the SQL Server (severity 16)

mssql_min_error_severity(17);
mssql_min_message_severity(17);
$query = mssql_query('SELECT *, (select error from master.dbo.sysmessages)
as bad_subquery from master.dbo.sysmessages');
// Prints nothing



Now, the behavior I disagree with relates to the return value from
mssql_query().  Unlike the PHP Warnings, it seems to be unaffected by the
min severity settings.  Please see the test script section.

Test script:
---------------
<?php
mssql_connect($host, $user, $pass);
mssql_select_db($dbname);
mssql_min_error_severity(16);
mssql_min_message_severity(16);

// This SQL has a severity 16 error -- subquery returns multiple rows
$query = @mssql_query('SELECT *, (select error from master.dbo.sysmessages)
as bad_subquery from master.dbo.sysmessages');
if (!$query) {
        echo "With min severity set to 16, inside custom error handler\n";
} else {
        echo "With min severity set to 16, return code indicates no error
from mssql_query()\n";
}


mssql_min_error_severity(17);
mssql_min_message_severity(17);

$query = @mssql_query('SELECT *, (select error from master.dbo.sysmessages)
as bad_subquery from master.dbo.sysmessages');
if (!$query) {
        echo "With min severity set to 17, inside custom error handler\n";
} else {
        echo "With min severity set to 17, return code indicates no error
from mssql_query()\n";
}

Expected result:
----------------
Expected output:

With min severity set to 16, inside custom error handler
With min severity set to 17, return code indicates no error from
mssql_query()

Actual result:
--------------
Actual output:

With min severity set to 16, return code indicates no error from
mssql_query()
With min severity set to 17, return code indicates no error from
mssql_query()

-- 
Edit bug report at https://bugs.php.net/bug.php?id=63485&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=63485&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=63485&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=63485&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=63485&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=63485&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=63485&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=63485&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=63485&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=63485&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=63485&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=63485&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=63485&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=63485&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=63485&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=63485&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=63485&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=63485&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=63485&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=63485&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=63485&r=mysqlcfg

Reply via email to