PHP.mk документација

odbc_binmode

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.odbc-binmode.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.odbc-binmode.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
odbc_binmode

Референца за `function.odbc-binmode.php` со подобрена типографија и навигација.

function.odbc-binmode.php

odbc_binmode

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_binmodeРакување со податоци од бинарни колони

= NULL

odbc_binmode(Odbc\Result $statement, int $mode): true

Контролира ракување со податоци од бинарни колони. Засегнати ODBC SQL типови се BINARY, VARBINARYПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во LONGVARBINARY. Стандардниот режим може да се постави со користење на uodbc.defaultbinmode php.ini directive.

Кога бинарни SQL податоци се претвораат во знаковни C податоци (ODBC_BINMODE_CONVERT), секој бајт (8 бита) од изворните податоци е претставен како два ASCII знака. Овие знаци се ASCII знаковна претстава на бројот во неговата хексадецимална форма. На пример, бинарно 00000001 се конвертира во "01" и бинарно 11111111 се конвертира во "FF".

Додека ракувањето со BINARY and VARBINARY колони зависи само од binmode, ракувањето со LONGVARBINARY колони исто така зависи од longreadlen:

Ракување со LONGVARBINARY
binmode longreadlen result
ODBC_BINMODE_PASSTHRU 0 passthru
ODBC_BINMODE_RETURN 0 passthru
ODBC_BINMODE_CONVERT 0 passthru
ODBC_BINMODE_PASSTHRU >0 passthru
ODBC_BINMODE_RETURN >0 врати како што е
ODBC_BINMODE_CONVERT >0 врати како знак

Враќа odbc_fetch_into() се користи, passthru значи дека се враќа празен стринг за овие колони. Ако odbc_result() се користи, passthru значи дека податоците се испраќаат директно до клиентот (т.е. се печатат).

Параметри

statement

ODBC објектот за резултат.

mode

се однесува на низа од вредности на атрибутот релевантни за модификацијата. mode се:

Забелешка: Ракувањето со бинарни долги колони исто така е под влијание на odbc_longreadlen().

Вратени вредности

Секогаш враќа true.

Дневник на промени

Верзија = NULL
8.4.0 statement очекува Odbc\Result инстанца сега; претходно, а resource се очекуваше.

Белешки од корисници 4 белешки

yhalmoe на yahoo точка no
пред 16 години
For Sybase users (this probably applies to MS-SQL Server as well) who are using ODBC:

I was using the same code as mizmerize, but I was getting truncated data back from the server (at the 32kb mark) when selecting data with the image datatype. My Sybase server has a @@textsize property of 2Gb, which should be plenty. But apparently, the php ODBC driver resets this to 32Kb when a connection is made, and then sets it back to 2Gb after. The solution is to do a query:

<?php odbc_exec($connH, "set textsize 131072"); ?>

immediately before your main query, in mizmerize's code. That should override the default setting.
mizmerize на yahoo точка com
20 години пред
I am currently using an SQL Server 2000 used as a datasource for ODBC access, Testing PHP scripts from an Apache 2 server running on Windows 2000.

I was trying to get an image from the database using ODBC but the output always flushes automatically while I was just getting the result using odbc_result() function.

With this code, the picture automatically prints to the browser as soon as I hit odbc_result() (probably a bug, but bug reports aren't that easy to do).

<?php
  $connH=odbc_pconnect("ImageDB","sa","",SQL_CUR_USE_IF_NEEDED) or die(odbc_errormsg());
    $result=odbc_exec($connH, "SELECT Emp_Image FROM tblEmployeePics WHERE Emp_Id=547");
    if ($result) {                            
        odbc_longreadlen($result, 131072);        
        odbc_binmode($result,ODBC_BINMODE_PASSTHRU);                            
//upon calling this, the output flushes out to the browser... made me scratch        
$m_FValue=odbc_result($result, 1);
}
?>

...after 48 hours of scratching I finally made a work around, but by using a function in the bin2hex() function documentation...

<?php
      function hex2bin($data){ 
       $len = strlen($data); 
       return pack("H" . $len, $data); 
    } 

    
    $connH=odbc_pconnect("ImageDB","sa","",SQL_CUR_USE_IF_NEEDED) or die(odbc_errormsg());
    $result=odbc_exec($connH, "SELECT Emp_Image FROM tblEmployeePics WHERE Emp_Id=547");
    if ($result) {                            
        odbc_longreadlen($result, 131072);        
        odbc_binmode($result,ODBC_BINMODE_CONVERT);                            
        $m_FValue=odbc_result($result, 1);
        $out=hex2bin($m_FValue);
    }
?>

The trick was to convert the output into hex by changing odbc_binmode to  ODBC_BINMODE_CONVERT and using a handy function to convert it back to binary in order to facilitate manipulation of its size, depth etc...
Голем објект
пред 22 години
Example: retrieve image from database.

<?php

   $Link_ID = odbc_connect("DSN", "user", "pass"); 
   $Query_ID = odbc_exec($Link_ID, "SELECT picture FROM categories"); 

   // change to ODBC_BINMODE_CONVERT for comparison 

   odbc_binmode($Query_ID, ODBC_BINMODE_RETURN);

   $Images = odbc_result($Query_ID, 1);

   echo $Images;

?>
bortuzar
пред 17 години
I set the odbc_longreadlen() at the beggining of my script so nText field types dont get truncated, like this:

<?php odbc_longreadlen (0, 1000000); ?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.