123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- if (!defined('ADODB_DIR')) die();
- if (!defined('_ADODB_ODBC_LAYER')) {
- include(ADODB_DIR."/drivers/adodb-odbc.inc.php");
- }
- if (!defined('ADODB_SYBASE_SQLANYWHERE')){
- define('ADODB_SYBASE_SQLANYWHERE',1);
- class ADODB_sqlanywhere extends ADODB_odbc {
- var $databaseType = "sqlanywhere";
- var $hasInsertID = true;
-
- function ADODB_sqlanywhere()
- {
- $this->ADODB_odbc();
- }
- function _insertid() {
- return $this->GetOne('select @@identity');
- }
- function create_blobvar($blobVarName) {
- $this->Execute("create variable $blobVarName long binary");
- return;
- }
- function drop_blobvar($blobVarName) {
- $this->Execute("drop variable $blobVarName");
- return;
- }
- function load_blobvar_from_file($blobVarName, $filename) {
- $chunk_size = 1000;
- $fd = fopen ($filename, "rb");
- $integer_chunks = (integer)filesize($filename) / $chunk_size;
- $modulus = filesize($filename) % $chunk_size;
- if ($modulus != 0){
- $integer_chunks += 1;
- }
- for($loop=1;$loop<=$integer_chunks;$loop++){
- $contents = fread ($fd, $chunk_size);
- $contents = bin2hex($contents);
- $hexstring = '';
- for($loop2=0;$loop2<strlen($contents);$loop2+=2){
- $hexstring .= '\x' . substr($contents,$loop2,2);
- }
- $hexstring = $this->qstr($hexstring);
- $this->Execute("set $blobVarName = $blobVarName || " . $hexstring);
- }
- fclose ($fd);
- return;
- }
- function load_blobvar_from_var($blobVarName, &$varName) {
- $chunk_size = 1000;
- $integer_chunks = (integer)strlen($varName) / $chunk_size;
- $modulus = strlen($varName) % $chunk_size;
- if ($modulus != 0){
- $integer_chunks += 1;
- }
- for($loop=1;$loop<=$integer_chunks;$loop++){
- $contents = substr ($varName, (($loop - 1) * $chunk_size), $chunk_size);
- $contents = bin2hex($contents);
- $hexstring = '';
- for($loop2=0;$loop2<strlen($contents);$loop2+=2){
- $hexstring .= '\x' . substr($contents,$loop2,2);
- }
- $hexstring = $this->qstr($hexstring);
- $this->Execute("set $blobVarName = $blobVarName || " . $hexstring);
- }
- return;
- }
-
- function UpdateBlob($table,$column,&$val,$where,$blobtype='BLOB')
- {
- $blobVarName = 'hold_blob';
- $this->create_blobvar($blobVarName);
- $this->load_blobvar_from_var($blobVarName, $val);
- $this->Execute("UPDATE $table SET $column=$blobVarName WHERE $where");
- $this->drop_blobvar($blobVarName);
- return true;
- }
- };
- class ADORecordSet_sqlanywhere extends ADORecordSet_odbc {
- var $databaseType = "sqlanywhere";
- function ADORecordSet_sqlanywhere($id,$mode=false)
- {
- $this->ADORecordSet_odbc($id,$mode);
- }
- };
- }
- ?>
|