Jump to content
php.lv forumi

Paradox datu bāzes rakstīšana no PHP


usver

Recommended Posts

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.

Link to comment
Share on other sites

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...