Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PDO + MySQL always returns strings, but what about MsSQL?

PDO always returns field values as strings when using MySQL. Is PDO consistent when using another database like MSSQL?

If not, is there a flag which forces PDO to always return strings (for purpose of consistency)? or better still to return native types for all values?

From what I can tell, Drupal makes it possible to use different databases using PDO. It performs the necessary conversions to make SQL statements compatible with the varying syntaxes. But how does it deal with data types in query results?

like image 985
Lea Hayes Avatar asked May 16 '11 12:05

Lea Hayes


1 Answers

If you want to make sure that you always get strings you can use bindColumn() and specify the data type for each column

$sql = 'SELECT id, name FROM test';
$stmt = $dbh->query($sql);
/* Bind by column number */
$stmt->bindColumn(1, $id, PDO::PARAM_STR); //or PDO::PARAM_INT
$stmt->bindColumn(2, $name, PDO::PARAM_STR);
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
  var_dump($id); var_dump($name);
}
like image 62
silverskater Avatar answered Oct 27 '22 02:10

silverskater