kdeff Posted April 28, 2013 Share Posted April 28, 2013 This question comes from an efficienct standpoint. Why does SQL (I've used PGSQL and MySQL) always return variables as strings to PHP? This seems horribly inefficient, as the SQL server will have to transmit bulky string data to PHP when representing anything. Why pass the string "FALSE" to php when a 1 bit boolean would suffice? Link to comment https://forums.phpfreaks.com/topic/277373-why-does-sql-return-strings-to-php/ Share on other sites More sharing options...
trq Posted April 28, 2013 Share Posted April 28, 2013 Can we see some examples of your data? Link to comment https://forums.phpfreaks.com/topic/277373-why-does-sql-return-strings-to-php/#findComment-1426914 Share on other sites More sharing options...
kdeff Posted April 28, 2013 Author Share Posted April 28, 2013 This is not specific to my project. Am I wrong in my assumption - is there a way to return variables to PHP without strings? Link to comment https://forums.phpfreaks.com/topic/277373-why-does-sql-return-strings-to-php/#findComment-1426916 Share on other sites More sharing options...
trq Posted April 28, 2013 Share Posted April 28, 2013 The only time you would get the string "false" is if your data was the string "false". If you store your booleans as 1's and 0's (in a tinyint(1) field) they will equate to true and false in php. Link to comment https://forums.phpfreaks.com/topic/277373-why-does-sql-return-strings-to-php/#findComment-1426917 Share on other sites More sharing options...
ignace Posted April 28, 2013 Share Posted April 28, 2013 The reason that SQL returns everything as a string except NULL which since a certain PHP version, I think 5.3, actually returns NULL, is because that it simply can't translate the types correctly. It can't translate a TINYINT, a SMALLINT, a MEDIUMINT, a BIGINT, a DECIMAL, a DATETIME, a YEAR, a TIME, a VARBINARY, a DOUBLE, an ENUM, a SET, ... And these are just the ones that I can think of out of the top of my hat. Not to mention any custom data types in MySQL. So thus since it can only translate about 2 or 3 types correctly it simply doesn't bother and it's expected of the user to do this conversion themselves if desired. Now you may wonder why I included TINYINT, SMALLINT, MEDIUMINT, ENUM, YEAR, etc. This is because you probably don't understand type translation between languages. When the column is a tinyint then in PHP it should be the equivalent not a 32-bit signed integer or you will get problems when you want to update the row (where this translation would also exist, and you can't fit a 32-bit signed integer into a tinyint). The same goes for example a SET, which would be an array where you can only add certain values. SQL: SET('foo', 'bar', 'bat', 'baz') PHP: $mySet[] = 'world'; // error: world is not in set('foo', 'bar', 'bat', 'baz') Link to comment https://forums.phpfreaks.com/topic/277373-why-does-sql-return-strings-to-php/#findComment-1426922 Share on other sites More sharing options...
Barand Posted April 28, 2013 Share Posted April 28, 2013 This question comes from an efficienct standpoint. Why does SQL (I've used PGSQL and MySQL) always return variables as strings to PHP? This seems horribly inefficient, as the SQL server will have to transmit bulky string data to PHP when representing anything. Why pass the string "FALSE" to php when a 1 bit boolean would suffice? It returns 1 for true, not "TRUE" mysql> SELECT 5=5 as result; +--------+ | result | +--------+ | 1 | +--------+ Link to comment https://forums.phpfreaks.com/topic/277373-why-does-sql-return-strings-to-php/#findComment-1427037 Share on other sites More sharing options...
fenway Posted May 5, 2013 Share Posted May 5, 2013 This really up to the driver -- MySQL faithfully returns types. Link to comment https://forums.phpfreaks.com/topic/277373-why-does-sql-return-strings-to-php/#findComment-1428423 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.