
{"id":312,"date":"2018-02-26T17:32:40","date_gmt":"2018-02-26T20:32:40","guid":{"rendered":"http:\/\/eliezerladeira.com.br\/blog\/?p=312"},"modified":"2018-08-31T16:50:09","modified_gmt":"2018-08-31T19:50:09","slug":"iniciando-com-php-e-interbase","status":"publish","type":"post","link":"https:\/\/eliezerladeira.com.br\/blog\/iniciando-com-php-e-interbase\/","title":{"rendered":"Iniciando com PHP e InterBase"},"content":{"rendered":"<p>[ratings]<\/p>\n<p>O InterBase existe desde meados de 1980. Depois de v\u00e1rios anos na estrada, ele se tornou Open Source pela Borland em Julho de 2000. A vers\u00e3o que vou utilizar \u00e9 a 6.01 (= 6.0 + patch de seguran\u00e7a). Ela roda no Linux, v\u00e1rios derivados de Unix e no Windows.<\/p>\n<div class=\"article\">\n<p>O IB n\u00e3o exige muitos recursos da m\u00e1quina. O espa\u00e7o em disco requerido \u00e9 em torno de 10MB.<\/p>\n<p>Atualmente,\u00a0o desenvolvimento do c\u00f3digo \u00e9 feito em 2 partes distintas :<\/p>\n<ul>\n<li>InterBase<\/li>\n<li>Firebird<\/li>\n<\/ul>\n<p>Firebird \u00e9 uma bifurca\u00e7\u00e3o do c\u00f3digo liberado pela Borland. A comunidade Open Source \u00e9 quem desenvolve o c\u00f3digo, entre eles a IBPhoenix. Essa vers\u00e3o \u00e9 aprimorada constantemente enquanto que o IB 6.0 continua estagnado desde o seu lan\u00e7amento. O c\u00f3digo do Firebird pode ser baixado do site <a href=\"http:\/\/firebird.sourceforge.net\">firebird.sourceforge.net<\/a>.<\/p>\n<p>Por enquanto, o Firebird e o InterBase 6.0 s\u00e3o totalmente compat\u00edveis.<\/p>\n<p>A seguir seguem alguns sites com uma boa informa\u00e7\u00e3o a respeito:<\/p>\n<ul>\n<li>IBPhoenix: <a href=\"http:\/\/www.ibphoenix.com\/\" target=\"_blank\">http:\/\/www.ibphoenix.com\/<\/a><\/li>\n<li>Firebird: <a href=\"http:\/\/www.firebirdsql.com\/\" target=\"_blank\">http:\/\/www.firebirdsql.com\/<\/a><\/li>\n<li>Borland official: <a href=\"http:\/\/www.borland.com\/interbase\/\" target=\"_blank\">http:\/\/www.borland.com\/interbase\/<\/a><\/li>\n<\/ul>\n<h3>Baixando e instalando o InterBase<\/h3>\n<p>O InterBase 6.01 pode ser baixado <a href=\"http:\/\/www.borland.com\/devsupport\/interbase\/opensource\/\" target=\"_blank\">aqui<\/a>.<\/p>\n<p>O Firebird pode ser baixado <a href=\"http:\/\/www.firebirdsql.com\" target=\"_blank\">aqui<\/a>.<\/p>\n<p>Para Linux existem 2 vers\u00f5es:<\/p>\n<ul>\n<li>Cl\u00e1ssica;<\/li>\n<li>Super Server.<\/li>\n<\/ul>\n<h3>Compilando o PHP com suporte ao InterBase<\/h3>\n<p>Como muitas distribui\u00e7\u00f5es n\u00e3o compilam o suporte ao InterBase no PHP, \u00e9 uma boa id\u00e9ia saber como fazer isso. Descompacte o c\u00f3digo-fonte do PHP no diret\u00f3rio de sua prefer\u00eancia e configure-o assim:<\/p>\n<div>\n<div id=\"highlighter_190393\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">.\/configure --<\/code><code class=\"js keyword\">with<\/code><code class=\"js plain\">-interbase=\/opt\/interbase --<\/code><code class=\"js keyword\">with<\/code><code class=\"js plain\">-apxs<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">Tenha certeza de passar o path correto do diret\u00f3rio do InterBase como par\u00e2metro (\/opt\/interbase, no nosso caso). Ent\u00e3o digite:<\/div>\n<div class=\"spacesyntax\"><\/div>\n<div>\n<div id=\"highlighter_554224\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">make<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"js plain\">make install<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">Quando a instala\u00e7\u00e3o estiver terminada, abra o arquivo de configura\u00e7\u00e3o php.ini localizado em \/usr\/local\/lib\/, e verifique se as seguinte linhas existem (se preciso descomente-as):<\/div>\n<div class=\"spacesyntax\"><\/div>\n<div>\n<div id=\"highlighter_548238\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">magic_quotes_sybase = On\u00a0\u00a0\u00a0 ; Use Sybase-style magic quotes (escape <\/code><code class=\"js string\">\" with \"<\/code><code class=\"js plain\">\" instead of \\\")<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"js plain\">extension=php_interbase.so<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">\n<h3>Configurando o Apache<\/h3>\n<p>No caso do Apache, ele s\u00f3 precisa ser configurado para trabalhar com o m\u00f3dulo PHP. O InterBase em si \u00e9 manuseado pelo PHP. Se voc\u00ea j\u00e1 usava o PHP\u00a0antes no seu servidor, ent\u00e3o n\u00e3o precisa fazer nada. Sen\u00e3o, abra o arquivo de configura\u00e7\u00e3o do apache, (httpd.conf, geralmente localizado em \/etc ou \/etc\/httpd), procure pelas seguintes linhas e adicione-as ou descomente-as.<\/p>\n<\/div>\n<div class=\"spacesyntax\"><\/div>\n<div>\n<div id=\"highlighter_550886\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">LoadModule php4_module\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/usr\/lib\/apache\/libphp4.so<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"js plain\">AddModule mod_php4.c<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"js plain\">&lt;IfModule mod_php4.c&gt;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"js plain\">AddType application\/x-httpd-php .php<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"js plain\">AddType application\/x-httpd-php .php4<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"js plain\">AddType application\/x-httpd-php-source .phps<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"js plain\">&lt;IfModule&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">Eventualmente, para que suas p\u00e1ginas sejam processadas pelo PHP, voc\u00ea dever\u00e1 utilizar a extens\u00e3o php nelas.<\/div>\n<p>N\u00e3o se esque\u00e7a tamb\u00e9m de adicionar index.php (ou alguma_coisa.php) como DirectoryIndex no arquivo de configura\u00e7\u00e3o do Apache.<\/p>\n<h3>Criando um novo usu\u00e1rio no banco de dados<\/h3>\n<p>Antes de criar um banco de dados, devemos primeiro criar um usu\u00e1rio. Para nosso exemplo usaremos username &#8220;phptest&#8221; e senha &#8220;phptest&#8221;. Isso pode ser feito utilizando-se o utilit\u00e1rio gsec que acompanha o InterBase\/Firebird. Assumindo que a senha do SYSDBA seja masterkey, use o seguinte comando para criar o usu\u00e1rio:<\/p>\n<div>\n<div id=\"highlighter_350104\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">\/opt\/interbase\/bin\/gsec -user sysdba -password masterkey -add <\/code><code class=\"js string\">\"phptest\"<\/code> <code class=\"js plain\">-pw <\/code><code class=\"js string\">\"phptest\"<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">\n<h3>Criando um banco de dados de teste<\/h3>\n<\/div>\n<p>Antes de criar o banco, baixe esse script : createdb.sql.<\/p>\n<div>\n<div id=\"highlighter_7132\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10 11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">CREATE DATABASE <\/code><code class=\"js string\">\"phptest.gdb\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"js plain\">PAGE_SIZE=8192<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"js plain\">DEFAULT CHARACTER SET ISO8859_1;<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"js plain\">CREATE TABLE ADDRESS<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"js plain\">(<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"js plain\">CATEGORY INTEGER NOT NULL,<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"js plain\">NAME VARCHAR(100) NOT NULL,<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"js plain\">KEYINDEX INTEGER NOT NULL,<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"js plain\">ADDRESS BLOB SUB_TYPE TEXT SEGMENT SIZE 100,<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"js plain\">PRIMARY KEY (KEYINDEX)<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"js plain\">);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"js plain\">GRANT SELECT,DELETE,INSERT,UPDATE ON ADDRESS TO phptest;<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"js plain\">commit;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">\u00a0Crie o banco de dados com o seguinte comando:<\/div>\n<div>\n<div id=\"highlighter_131623\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">\/opt\/interbase\/bin\/isql -i createdb.sql -u sysdba -p masterkey<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">\u00a0\u00c9 sempre uma boa id\u00e9ia guardar os scripts para, se necess\u00e1rio, recriar o banco de dados. Lembre-se de alterar tamb\u00e9m a senha padr\u00e3o do &#8220;sysdba&#8221;, pois ela \u00e9 conhecida por todo mundo!<\/div>\n<h3>Alguns exemplos de c\u00f3digo<\/h3>\n<p><i><\/i>Select:<\/p>\n<div>\n<div id=\"highlighter_776216\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">$dbh = ibase_connect(<\/code><code class=\"js string\">\"\/home\/yves\/projects\/php\/phptest.gdb\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"phptest\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"phptest\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"ISO8859_1\"<\/code><code class=\"js plain\">,0,1);<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"js plain\">$sth=ibase_query(<\/code><code class=\"js string\">\"SELECT NAME,ADDRESS FROM ADDRESS WHERE KEYINDEX=?\"<\/code><code class=\"js plain\">,$HTTP_POST_VARS[<\/code><code class=\"js string\">\"KEYINDEX\"<\/code><code class=\"js plain\">]);<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"js keyword\">while<\/code> <code class=\"js plain\">($row = ibase_fetch_row($sth)) {<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"js spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"js plain\">print $row[0].<\/code><code class=\"js string\">\"\\n\"<\/code><code class=\"js plain\">;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"js spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"js plain\">ibase_blob_echo($row[1]);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"js plain\">}<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"js plain\">ibase_free_result($sth);<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"js plain\">ibase_close($dbh);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">A primeira linha faz uma conex\u00e3o com o banco de dados. Nosso comando SQL \u00e9 configurado na segunda linha. (Veja como a vari\u00e1vel de formul\u00e1rio KEYINDEX \u00e9 substituida dentro da query.) Finalmente, com a chamada ibase_fetch_row($sth), n\u00f3s recuperamos linha a linha (bem, nesse exemplo apenas uma linha). No loop, o nome do campo \u00e9 impresso por:<\/div>\n<div class=\"spacesyntax\"><\/div>\n<div>\n<div id=\"highlighter_365647\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">print $row[0].<\/code><code class=\"js string\">\"\\n\"<\/code><code class=\"js plain\">;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">Como nosso campo ADDRESS \u00e9 um blob, ele \u00e9 recuperado com:<\/div>\n<div class=\"spacesyntax\"><\/div>\n<div>\n<div id=\"highlighter_93606\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">ibase_blob_echo($row[1]);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">Blobs de texto precisam ser tratados assim. Voc\u00ea n\u00e3o pode simplesmente imprimi-los com um simples &#8220;print&#8221;.<\/div>\n<div class=\"spacesyntax\"><\/div>\n<p>Insert:<\/p>\n<div>\n<div id=\"highlighter_99250\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10\u00a011<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">$dbh = ibase_connect(<\/code><code class=\"js string\">\"\/home\/yves\/projects\/php\/phptest.gdb\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"phptest\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"phptest\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"ISO8859_1\"<\/code><code class=\"js plain\">,0,1);<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"js plain\">$blob_id = ibase_blob_create();<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"js plain\">ibase_blob_add($blob_id,$HTTP_POST_VARS[<\/code><code class=\"js string\">\"ADDRESS\"<\/code><code class=\"js plain\">]);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"js plain\">$blob_id_str = ibase_blob_close($blob_id);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"js plain\">$sth = ibase_prepare(<\/code><code class=\"js string\">\"INSERT INTO ADDRESS (KEYINDEX,NAME,ADDRESS,CATEGORY) VALUES (?,?,?,?)\"<\/code><code class=\"js plain\">);<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"js plain\">$trans=ibase_trans();<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"js plain\">ibase_execute($sth,$HTTP_POST_VARS[<\/code><code class=\"js string\">\"KEYINDEX\"<\/code><code class=\"js plain\">],<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"js spaces\">\u00a0\u00a0<\/code><code class=\"js plain\">stripslashes(strip_tags($HTTP_POST_VARS[<\/code><code class=\"js string\">\"NAME\"<\/code><code class=\"js plain\">])),<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"js spaces\">\u00a0\u00a0<\/code><code class=\"js plain\">$blob_id_str,$HTTP_POST_VARS[<\/code><code class=\"js string\">\"CATEGORY\"<\/code><code class=\"js plain\">]);<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"js plain\">ibase_commit($trans);<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"js plain\">ibase_free_query($sth);<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"js plain\">ibase_close($dbh);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">D\u00ea uma olhada nas linhas 3-5. A fun\u00e7\u00e3o ibase_blob_add \u00e9 necess\u00e1ria para preparar os dados antes de voc\u00ea inseri-los no BD. Atualmente, os dados da vari\u00e1vel $HTTP_POST_VARS[&#8220;ADDRESS&#8221;] s\u00e3o preparados e colocados no campo blob, usando a fun\u00e7\u00e3o $blob_id_str.<\/div>\n<div class=\"spacesyntax\"><\/div>\n<p>Update:<\/p>\n<div>\n<div id=\"highlighter_147274\" class=\"syntaxhighlighter js\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"js plain\">dbh = ibase_connect(<\/code><code class=\"js string\">\"\/home\/yves\/projects\/php\/phptest.gdb\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"phptest\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"phptest\"<\/code><code class=\"js plain\">,<\/code><code class=\"js string\">\"ISO8859_1\"<\/code><code class=\"js plain\">,0,1);<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"js plain\">$sth = ibase_prepare(<\/code><code class=\"js string\">\"UPDATE ADDRESS SET NAME=? WHERE KEYINDEX=?\"<\/code><code class=\"js plain\">);<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"js plain\">$trans=ibase_trans();<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"js plain\">ibase_execute($sth,stripslashes(strip_tags($HTTP_POST_VARS[<\/code><code class=\"js string\">\"NAME\"<\/code><code class=\"js plain\">])),$HTTP_POST_VARS[<\/code><code class=\"js string\">\"KEYINDEX\"<\/code><code class=\"js plain\">]);<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"js plain\">ibase_commit($trans);<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"js plain\">ibase_free_query($sth);<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"js plain\">ibase_close($dbh);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div class=\"spacesyntax\">Esse exemplo \u00e9 auto explicativo.<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>[ratings] O InterBase existe desde meados de 1980. Depois de v\u00e1rios anos na estrada, ele se tornou Open Source pela<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[15],"tags":[83,82,51],"class_list":["post-312","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-banco-de-dados","tag-php","tag-programacao"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":317,"url":"https:\/\/eliezerladeira.com.br\/blog\/manipulacao-de-dados-via-php-firebird\/","url_meta":{"origin":312,"position":0},"title":"Manipula\u00e7\u00e3o de dados via PHP + Firebird","author":"admin","date":"","format":false,"excerpt":"[ratings] O PHP\u00a0\u00e9 uma linguagem com suporte nativo a diversos bancos de dados. Como estamos trabalhando com InterBase\/Firebird, segue um exemplo pr\u00e1tico de como a coisa funciona. Este exemplo foi testado com um servidor Windows 2000 e Firebird 1.0. A princ\u00edpio\u00a0voc\u00ea ter\u00e1 que ter instalado em seu computador o servidor\u2026","rel":"","context":"Em &quot;Inform\u00e1tica&quot;","block_context":{"text":"Inform\u00e1tica","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/informatica\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2698,"url":"https:\/\/eliezerladeira.com.br\/blog\/10-coisas-sobre-software-livre-que-todos-deveriam-saber-2\/","url_meta":{"origin":312,"position":1},"title":"10 coisas sobre Software Livre que todos deveriam saber","author":"admin","date":"","format":false,"excerpt":"Um dos principais defensores do mundo do movimento de software open-source, Brian Behlendorf, falou na Digital Freedon Expo, Universidade Western Cape, descrevendo as \u201cDez coisas que voc\u00ea pode n\u00e3o saber sobre o Open-Source\u201d. O Behlendorf foi um desenvolvedor chave do servi\u00e7o de Web\u00a0Apache, sobre o qual mais da metade dos\u2026","rel":"","context":"Em &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":178,"url":"https:\/\/eliezerladeira.com.br\/blog\/10-coisas-sobre-software-livre-que-todos-deveriam-saber\/","url_meta":{"origin":312,"position":2},"title":"10 coisas sobre Software Livre que todos deveriam saber","author":"admin","date":"","format":false,"excerpt":"[ratings] Um dos principais defensores do mundo do movimento de software open-source, Brian Behlendorf, falou na Digital Freedon Expo, Universidade Western Cape, descrevendo as \"Dez coisas que voc\u00ea pode n\u00e3o saber sobre o Open-Source\". O Behlendorf foi um desenvolvedor chave do servi\u00e7o de Web Apache, sobre o qual mais da\u2026","rel":"","context":"Em &quot;Inform\u00e1tica&quot;","block_context":{"text":"Inform\u00e1tica","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/informatica\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":337,"url":"https:\/\/eliezerladeira.com.br\/blog\/php-5-construtores-e-destrutores\/","url_meta":{"origin":312,"position":3},"title":"PHP 5 &#8211; Construtores e Destrutores","author":"admin","date":"","format":false,"excerpt":"[ratings] M\u00c9TODO CONSTRUTOR Na vers\u00e3o 4\u00a0do PHP geralmente d\u00e1-se um mesmo nome da classe para um m\u00e9todo fazendo com que ele seja executado quando o instanciamos. Para quem n\u00e3o entendeu imagine a seguinte situa\u00e7\u00e3o: Iremos construir uma pequena classe chamada \"Pao\". <?php Class Pao { \/** * adiciona itens ao\u2026","rel":"","context":"Em &quot;Inform\u00e1tica&quot;","block_context":{"text":"Inform\u00e1tica","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/informatica\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":339,"url":"https:\/\/eliezerladeira.com.br\/blog\/variaveis-variaveis\/","url_meta":{"origin":312,"position":4},"title":"Vari\u00e1veis Vari\u00e1veis","author":"admin","date":"","format":false,"excerpt":"[ratings] Neste post mostrarei uma r\u00e1pida maneira de como criar sisteminhas que geram automa\u00a0automaticamente combos de HTML e como us\u00e1-los de maneira produtiva para uma exclus\u00e3o, por exemplo. Para se fazer isso, usa-se o conceito de uma vari\u00e1vel que n\u00e3o somente cont\u00e9m um valor que h\u00e1 distin\u00e7\u00e3o, que \u00e9 o\u2026","rel":"","context":"Em &quot;Inform\u00e1tica&quot;","block_context":{"text":"Inform\u00e1tica","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/informatica\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2783,"url":"https:\/\/eliezerladeira.com.br\/blog\/como-criar-um-widget\/","url_meta":{"origin":312,"position":5},"title":"Como criar um\u00a0widget","author":"admin","date":"","format":false,"excerpt":"Produza seu pr\u00f3prio widget\u00a0e exporte seu feed RSS para outros sites e blogs. Os widgets\u00a0est\u00e3o no auge de sua popularidade. Com eles \u00e9 poss\u00edvel adicionar not\u00edcias, miniaplicativos, joguinhos e outros trecos digitais a qualquer blog ou site pessoal. Parece complicado de fazer, mas, em termos de programa\u00e7\u00e3o, um widget \u00e9\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"266_widget2","src":"https:\/\/i0.wp.com\/netsysoft.wordpress.com\/wp-content\/uploads\/2009\/01\/266_widget2.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/312","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/comments?post=312"}],"version-history":[{"count":1,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/312\/revisions"}],"predecessor-version":[{"id":313,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/312\/revisions\/313"}],"wp:attachment":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/media?parent=312"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/categories?post=312"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/tags?post=312"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}