Jump to content
php.lv forumi

Paradox datu bāzes rakstīšana no PHP


Recommended Posts

Posted

Mēģinu updeitot/pievienot ierakstus Paradox datubāzē.

 

Jaunā datubāzē raktīt izdodas perfekti - uztaisam DB no nulles, ievietojam visu, ko vien vēlamies.

Esošai neizdodas ierakstīt neko ne sitamai.

Lasīt var perfekti jebko.

 

Pievienojot ierakstus, šī rindiņa var_dump(px_put_record($this->doc, $rec)); atgriež "true", kas nozīmē veiksmīgu ierakstu.

Arī DB izmērs pie mēģinājumiem pieaug, tātad kaut kas tomēr rakstās. Bet nolasot datus, nekas nav mainījies.

BET - mēģinot norādīt esošas rakstīšanai //px_set_parameter($this->doc, "tablename", "resttemp.DB");, tā paziņo: "Setting tablenams has no effect - DB is not writable".

 

Faila atvēršanai ir izmēģināti dažādi sviči: r+/rb+, a+/ab+. Rezultāts identisks.

 

Vide:

XAMPP 1.7.1 iekļautais Paradox php ekstensija, pxlib versija: 0.6.3 (pēdējā).

Paradox 7 DB, tas pats ar Paradox 5 failiem.

Borland DBA ir instalēts (5.01).

XP SP3 (ar pēdējiem dzīvajiem MDAC), taču ODBC datubāzi neizdodas nolasīt.

 

izvilkums no phpinfo():

Paradox support 	enabled
pxlib Version 	0.6.3
support for recoding record data 	iconv
pxlib was build on 	no value
Revision 	$Revision: 1.37 $

 

Vai kādam ir idejas/risinājumi/ieteikumi šādām lietām?

Datubāze ir Paradox 7, pēc 10 gadu Paradox+Delphi izstrādes migrēt uz ko citu programmētājs atsakās.

Avārijas gadījumā laikam nāksies veidot Delphi utilītu, kas batch modē updeitos savu Paradox datubāzi.

 

Izmantotais kods:

       if(!file_exists($filename)){
           $newfile = true;
           $this->fp = fopen($filename,'w');
       } else {
           $this->fp = fopen($filename,'a+');
       }

       if(!$this->fp){echo 'could not connect to database '.$filename.'!<br>'; return;}


       ###### Datu ierakstīšana jaunā failā- strādā OK :)
       if($newfile)
       {
           $fields = array(array("col1", "S"));
           if(!px_create_fp($this->doc, $this->fp, $fields)) { echo 'neizdevās piesaistīt failam .. ';}
           px_set_parameter($this->doc, "tablename", "testtable");
           px_set_parameter($this->doc, "codepage", "1257");

           for($i=0; $i<5; $i++){
               $rec = array($i);
                px_put_record($this->doc, $rec);
           }
       }
       else 
       {
           if(!px_open_fp($this->doc, $this->fp)){echo 'could not initialize database '.$filename.'!<br>';return;}
       }

       ##### Datu pievienošana esošam failam
       if(!$newfile)
       {
           //var_dump($this->doc->px_stream);

           //px_set_parameter($this->doc, "tablename", "resttemp.DB");
           //for($i=1; $i<=5; $i++)
           //{
               $rec = array("993","8349",0,0,1,0,"Ilze","Lampina","Ilze Lampina");
               $inf = px_get_info($this->doc);

               //px_put_record($this->doc, $rec, -1);
               var_dump(px_put_record($this->doc, $rec));
           //}
       } 

 

Destruktorā ir šādas rindas:

function __desctruct(){
	px_close($this->doc);
	px_delete($this->doc);
	fclose($this->fp);
}

Izmēģināt ar un bez px_delete(), rezultāts nemainās.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...