/** * Method send DataBase data * @param Binary $value * @param AbstractPlatform $platform * @return Database return communication */ public function convertToDatabaseValue($value, AbstractPlatform $platform) { // This is executed when the value is written to the database. Make your conversions here, optionally using the $platform. if ($value === null) { $params = null; } else { $fileStream = fopen($value, "r"); $params = array($fileStream, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY), SQLSRV_SQLTYPE_VARBINARY('max')); } return $params; }
/** * {@inheritdoc} */ public function bindParam($column, &$variable, $type = null, $length = null) { if (!is_numeric($column)) { throw new SQLSrvException("sqlsrv does not support named parameters to queries, use question mark (?) placeholders instead."); } if ($type === \PDO::PARAM_LOB) { $this->params[$column - 1] = array($variable, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY), SQLSRV_SQLTYPE_VARBINARY('max')); } else { $this->params[$column - 1] = $variable; } }
/** * Low level handling getting a row from a result set; automatically * makes all fetched values strings, just like the other PHP db functions. * We have to do this since the sqlsrv extension returns row values in thier * native types, which causes problems with how we handle things. * * @param resource $result * @return array */ private function _fetchRowAssoc($result) { if (!is_resource($result)) { return false; } $row = array(); $fieldnames = $this->getFieldsArray($result); $fieldMetaData = sqlsrv_field_metadata($result); if (sqlsrv_fetch($result)) { for ($i = 0; $i < sqlsrv_num_fields($result); $i++) { if ($fieldMetaData[$i]['Type'] == -9 || $fieldMetaData[$i]['Type'] >= SQLSRV_SQLTYPE_NVARCHAR(1) && $fieldMetaData[$i]['Type'] <= SQLSRV_SQLTYPE_NVARCHAR(8000) || $fieldMetaData[$i]['Type'] >= SQLSRV_SQLTYPE_NCHAR(1) && $fieldMetaData[$i]['Type'] <= SQLSRV_SQLTYPE_NCHAR(8000) || $fieldMetaData[$i]['Type'] == SQLSRV_SQLTYPE_NVARCHAR('max') || $fieldMetaData[$i]['Type'] == SQLSRV_SQLTYPE_NCHAR('max')) { $row[$fieldnames[$i]] = iconv("utf-16le", "utf-8", sqlsrv_get_field($result, $i, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY))); } elseif ($fieldMetaData[$i]['Type'] == -3 || $fieldMetaData[$i]['Type'] == SQLSRV_SQLTYPE_IMAGE || $fieldMetaData[$i]['Type'] == SQLSRV_SQLTYPE_VARBINARY('max') || $fieldMetaData[$i]['Type'] >= SQLSRV_SQLTYPE_VARBINARY(1) && $fieldMetaData[$i]['Type'] <= SQLSRV_SQLTYPE_VARBINARY(8000)) { $resource = sqlsrv_get_field($result, $i, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY)); ob_start(); fpassthru($resource); $row[$i] = ob_get_contents(); ob_end_clean(); } else { $row[$fieldnames[$i]] = sqlsrv_get_field($result, $i, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)); } } } else { sqlsrv_free_stmt($result); } return $row; }