/** * 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; } }
public function SqlSrvMoveNext() { if (!isset($this->sqlsrvConnection)) { return false; } if (!isset($this->sqlsrvStatement)) { return false; } if (!sqlsrv_fetch($this->sqlsrvStatement)) { return false; } foreach ($this->columnBindings as $k => $col) { if ($col[1]) { $col[0] = sqlsrv_get_field($this->sqlsrvStatement, $k, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR)); } else { $col[0] = sqlsrv_get_field($this->sqlsrvStatement, $k); } } return true; }
function processReportUpload() { // Build filepath $uploadfile = getcwd() . '/tmp/' . basename($_FILES['file']['name']); // If move from temp PHP directory == success, then true if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { // Check to see if this is a duplicate report $isDuplicate = getReportData(NULL, gps('report_name')); if ($isDuplicate) { unlink($uploadfile); // Put result in a encoded JSON return $out = array("result" => 'duplicate', "report_name" => $isDuplicate['report_name'], "description" => $isDuplicate['short_description'], "report_id" => $out['report_id']); return json_encode($out); } //// Start building query // Get the file as binary $report_data = file_get_contents($uploadfile); // Report Name - Used to check for duplicates $report_name = gps('report_name'); // Report Short Description $short_description = gps('short_description'); // New Report? $reportStatus = gps('reportNew'); // Author ID $aud = gps('report_author_id'); $report_owner_author_id = $aud; $report_the_user_id = $aud; // Scope of Data $report_type_id = gps('report_type_id'); // Scope of Data $report_scope_id = gps('report_scope_id'); // Publication Number $pid = gps('report_number'); // Filename $report_file_name = basename($_FILES['file']['name']); // Publication Date. Tenatively date of import. $report_publication_date = date("m-d-y"); // xx-xx-xxxx // report filesize $report_file_size = filesize($uploadfile); // set report ID to null if it is a new report, otherwise, use $stored_report_id //$report_id = ($reportStatus == 0) ? NULL : $reportStatus; // Build Parameters $spParams = array(array(NULL, 1), array(NULL, 1), array($report_owner_author_id, 1), array($report_id, 1), array($report_name, 1), array($short_description, 1), array($pid, 1), array($report_publication_date, 1), array(1, 1), array($report_type_id, 1), array('http://', 1), array(1, 1), array($report_file_size, 1), array($report_file_name, 1), array($report_file_name, 1), array('pdf', 1), array('application/pdf', 1), array(1, 1), array($report_data, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY)), array(1, 1), array($report_scope_id, 1), array($report_the_user_id, 1)); // call the procedure $result = callStoredProcedure(sqlsrvConnect(), 'Report_WyomingTobaccoEdit_SP', $spParams); // if JSON result TRUE if ($result['success']) { unlink($uploadfile); // Delete uploaded file as its now in DB // prepare JSON data pairs in to array $out = array("result" => 'success', "post_ID" => gps('post_ID'), "description" => gps('short_description'), "category" => gps('category'), "scope" => gps('sod'), "publication_number" => gps('pid'), "report_id" => $result['report_id'], "report_name" => $result['report_name']); // return array as json return json_encode($out); } else { $error = print_r($result, TRUE); // if anything else, return error $out = array("result" => "error" . $error); return json_encode($out); } } }
protected function getSqlType() { $sqlType = null; $phpType = null; switch ($this->type) { case SqlParameterTypes::SqlInt: $sqlType = SQLSRV_SQLTYPE_INT; $phpType = SQLSRV_PHPTYPE_INT; break; case SqlParameterTypes::SqlBigInt: $sqlType = SQLSRV_SQLTYPE_BIGINT; $phpType = SQLSRV_PHPTYPE_INT; break; case SqlParameterTypes::SqlBit: $sqlType = SQLSRV_SQLTYPE_BIT; $phpType = SQLSRV_PHPTYPE_INT; break; case SqlParameterTypes::SqlFloat: $sqlType = SQLSRV_SQLTYPE_FLOAT; $phpType = SQLSRV_PHPTYPE_FLOAT; break; case SqlParameterTypes::SqlDecimal: $sqlType = SQLSRV_SQLTYPE_DECIMAL($this->precision, $this->scale); $phpType = SQLSRV_PHPTYPE_FLOAT; break; case SqlParameterTypes::SqlNVarChar: $sqlType = SQLSRV_SQLTYPE_NVARCHAR($this->size); $phpType = SQLSRV_PHPTYPE_STRING("UTF-8"); break; case SqlParameterTypes::SqlNVarCharMax: $sqlType = SQLSRV_SQLTYPE_NVARCHAR('max'); $phpType = SQLSRV_PHPTYPE_STRING("UTF-8"); break; case SqlParameterTypes::SqlXml: $sqlType = SQLSRV_SQLTYPE_XML; $phpType = SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY); break; case SqlParameterTypes::SqlUniqueIdentifier: $sqlType = SQLSRV_SQLTYPE_UNIQUEIDENTIFIER; $phpType = SQLSRV_PHPTYPE_STRING("UTF-8"); break; case SqlParameterTypes::SqlTinyInt: $sqlType = SQLSRV_SQLTYPE_TINYINT; $phpType = SQLSRV_PHPTYPE_INT; break; case SqlParameterTypes::SqlDate: $sqlType = SQLSRV_SQLTYPE_DATE; $phpType = SQLSRV_PHPTYPE_DATETIME; break; case SqlParameterTypes::SqlDateTime: $sqlType = SQLSRV_SQLTYPE_DATETIME; $phpType = SQLSRV_PHPTYPE_DATETIME; break; case SqlParameterTypes::SqlTime: $sqlType = SQLSRV_SQLTYPE_TIME; $phpType = SQLSRV_PHPTYPE_DATETIME; break; case SqlParameterTypes::SqlTimestamp: $sqlType = SQLSRV_SQLTYPE_TIMESTAMP; $phpType = SQLSRV_PHPTYPE_DATETIME; break; } return array($sqlType, $phpType); }
/** * Fetch a result row as a numeric array * @param Mixed qHanle The query handle * @return Array */ public function fetch_numarray($qHanle) { $rowArray = array(); $metaData = sqlsrv_field_metadata($qHanle); $fetchRes = sqlsrv_fetch($qHanle); if ($fetchRes === false) { triggerErrorMSSQL(); return $rowArray; } if (is_null($fetchRes)) { return $rowArray; } $j = 0; foreach ($metaData as $fieldMetadata) { switch ($fieldMetadata['Type']) { //dateTime case 93: $fieldVal = sqlsrv_get_field($qHanle, $j, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)); $fieldVal = substr($fieldVal, 0, strrpos($fieldVal, ".")); break; // ntext // ntext case -10: $fieldVal = sqlsrv_get_field($qHanle, $j, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR)); $buffer = null; while (!feof($fieldVal)) { $buffer .= fgets($fieldVal, 4096); } fclose($fieldVal); $fieldVal = $buffer; break; // image // image case -4: $fieldVal = sqlsrv_get_field($qHanle, $j, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY)); $buffer = null; while (!feof($fieldVal)) { $buffer .= fgets($fieldVal, 4096); } fclose($fieldVal); $fieldVal = $buffer; break; // text // text case -1: $fieldVal = sqlsrv_get_field($qHanle, $j, SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_CHAR)); $buffer = null; while (!feof($fieldVal)) { $buffer .= fgets($fieldVal, 4096); } fclose($fieldVal); $fieldVal = $buffer; break; // need to check, may be int data should be retrieved in another type // need to check, may be int data should be retrieved in another type default: $fieldVal = sqlsrv_get_field($qHanle, $j); } $rowArray[] = $fieldVal; $j++; } return $rowArray; }
/** * 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; }