Avatar billede tigertool Nybegynder
17. maj 2006 - 16:16 Der er 6 kommentarer og
1 løsning

InterBase: invalid BLOB ID

Hej,

Jeg får følgende fejl: "Warning:  ibase_execute() [function.ibase-execute]: invalid BLOB ID  in ...."

Min kode ser således ud:

      $ver_update = "update RDB\$PROCEDURES set RDB\$DESCRIPTION = ? where RDB\$PROCEDURE_NAME = 'MYPROCEDURE';";
     
      $blob_id = ibase_blob_create();
      ibase_blob_add($blob_id, "blobs");
      ibase_blob_add($blob_id, "more blobs");
      ibase_blob_add($blob_id, "and even more blobs");
      $blob_id_str = ibase_blob_close($blob_id);
         
      $ver_trans = ibase_trans(IBASE_DEFAULT, $dbh);
      $ver_sth = ibase_prepare($dbh, $ver_trans, $ver_update);
      $ver_res = ibase_execute($ver_sth, $blob_id_str);
     
      if (!$ver_res) {
        echo $name.": update error\n";
        ibase_rollback($ver_trans);
        ibase_free_query($ver_sth);
        unset($ver_res);
      }
      else
      {
        echo $name.": update success...\n";
        ibase_commit($ver_trans);
        ibase_free_query($ver_sth);
        unset($ver_res);
      }

Er der nogen der kan se hvor fejlen er?
Avatar billede barklund Nybegynder
17. maj 2006 - 16:22 #1
Du er nok lige nødt til at teste returværdien fra ibase_blob_close - hvis den er false, er der sket en fejl i oprettelsen af blob'en:

      $blob_id = ibase_blob_create();
      ibase_blob_add($blob_id, "blobs");
      ibase_blob_add($blob_id, "more blobs");
      ibase_blob_add($blob_id, "and even more blobs");
      $blob_id_str = ibase_blob_close($blob_id);
      if ($blob_id_str === false) {
          die("uark, blob error: ".ibase_errmsg());
      }

Så får du muligvis en bedre fejlmeddelelse herfra.

--
Morten Barklund
Avatar billede tigertool Nybegynder
17. maj 2006 - 16:25 #2
Det har jeg lige prøvet - der kommer ingen fejl - desværre.
Avatar billede barklund Nybegynder
17. maj 2006 - 16:34 #3
Hvad giver en ibase_errmsg()/ibase_errcode() efter execute?

Og hvad giver en var_dump($blob_id_str)?
Avatar billede tigertool Nybegynder
17. maj 2006 - 16:40 #4
Det giver følgende:

ibase_errmsg()      invalid BLOB ID
ibase_errcode()    -901
var_dump(..)        string(18) "0x0f91d5c400000000"
Avatar billede barklund Nybegynder
17. maj 2006 - 17:40 #5
Måske blob'en skal parses til et tal inden du indsætter. Prøv med noget intval inden du smider den til ibase_execute. Ellers har jeg intet bud.
Avatar billede tigertool Nybegynder
18. maj 2006 - 10:05 #6
Jeg har lige prøvet følgende:

      $fd = fopen("sp.txt", "r");
      $blob = ibase_blob_import($dbh, $fd);
      fclose($fd);

og så benytte $blob i min ibase_execute() sådan her: $ver_res = ibase_execute($ver_sth, $blob);

Giver stadig samme resultat (invalid BLOB ID)

Jeg benytter PHP Version 5.1.1
Avatar billede tigertool Nybegynder
15. juli 2006 - 22:07 #7
Lukker - fandt ikke en løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester