MSSQL with PHP: smalldatetime
A few days ago I got a SIGSEGV
when querying the MSSQL server with PHP. There was nothing special with the query, just a normal SELECT
statement, even without WHERE
limitations. After examining it a little bit I found out, that it depended on the columns I selected. When I left out some specific columns in the SELECT
, everything was ok.
First I thought that it depends on the values of the columns, but I couldn't really figure out a systematic. So only one conclusion is left: it is the column type. PHP crashes when querying a column with the smalldatetime
type. After some research I found, that it depends on the configuration parameter mssql.datetimeconvert
. If it is turned on, PHP crashes. If it is turned off, everything works fine. So for now, all my PHP scripts working with MSSQL Server begin like this:
if(ini_get('mssql.datetimeconvert')) {
echo "---------- WARNING! TURN OFF mssql.datetimeconvert! It causes PHP to crash on smalldatetime fields!\n";
echo "We're turning it off now for this script, but you should do it globally!\n";
ini_set('mssql.datetimeconvert',"off");
}
Hope that helps.