Jump to content
php.lv forumi

Recommended Posts

Posted

A kāpēc tieši klasi un Mysql?

Es saprotu, ja tev vajadzētu wraperi un [pg/my]sql..

 

PS: pārdeklarē mysql f-jas iekš savas klases.. un viss

Posted

ak jēl, šitādu klasi uztaisīt ir 5 min

 

/*abstract*/ class DB {
function query();
function error();
function affected_rows();
function result_rows();
function sql_add_limit($sql);
function ...();
function ...();
}

 

tālāk ekstendējam.. var uzreiz teikt, ka ja gribēsi Oraklim rakstīt, tad dažas lietas vispār mainīsies... un netiek atbalstītas...

 

katrā ziņā, vispirms ir jānodala, kādas DB suportēs, un tad jāizveido `kaut kas pa vidu`... lai vēlāk nav SQL jāpparaksta iekš aplikācijas..

 

Bet, vislabāk arī ir taisīt SQLBuilderi, un tās jau klases izmantos native PHP moduļu f-jas, lai caur N-wraperiem nav jālien..

 

tipa

 

$ds1 = $queryObj->addDatasource('tableName');
$ds2 = $ds1->addDatasource('OtherTableName'); /* parent */
$ds2->addLink( 'pCatId', 'catid' ); /* this_field, parent_field */

Posted

PDO neļauj man veidot SQL... SQL man pašam jāuzraksta... jo SQL/etc katram DB atšķirās... tas pats LIMIT - pgsql, mysql, oracle... nav viņiem vienādi.. pat nerunājot par oracle hack-triku (select *, rowid from (select...) )

 

Protams tas viss attiecās uz universāliem skriptiem/aplikācijām, kuru var uzstutēt uz jebkādas minētās DB... bet ja klients ir pieprasījis konkrētā `zvēra` izmantošanu, tad nu tur jau var tāpātās ar native f-jām...

Posted

Jautājumā netika prasīts vairāku db atbalsts. Tā ka ar parastām PDO klasēm pietiksies atliektiem galiem.

Posted

nu vispaar jau jaapsver jeega veidot taadu universaalu risinaajumu.

jo kas der visam, neder nekam.

shaa vai taa, ja mainaas dbvs, tad manupraat jaamaina aplikaacijas struktuura, jo katrai dbvs savi knifi

Posted

1.) imho, blogs, forums, neizmanto ne tuvu visas dbvs iespējas, gy... es par šiem runāju.

 

2.) ja domā izmantot konkrētu DB, šadai klasei - 0(nulle) jēga

Posted
2.) ja domā izmantot konkrētu DB, šadai klasei - 0(nulle) jēga

Kā savādāk automatizēt tādas darbības, kā, piemēram, nevēlamo simbolu filtrēšanu?

Posted

function plaintxtForDb()

{

...

}

 

function htmlForDb()

{

...

}

 

... bet nu ne jau veselu klasi jāraksta.. ja vēlies, tad vari arī vienā klasē apvienot ;) kā kuram garšo..

Posted
kā kuram garšo..

Ļoti pareizi. Man tomēr labāk patīk lietot klasi, kuras funkcijās šīs darbības notiek automatizēti, daļēji konstruējot SQL, daļēji - nē, utml.

  • 3 months later...
Posted

Nezinu vai vēl vajag, bet man te viena, nē pareizāk sakot divas klasītes mētājas. To samērā viegli pārtaisīt arī uz citu DB.

RaDB - konekcijas iterface uz DB

RaQuery - SQL interface;

class RaDB {
 var $ID;
 function connect($db_path, $s_user,$s_password, $dbname) {

$this->ID = @mysql_connect($db_path, $s_user, $s_password);

if ($this->ID) {
  @mysql_select_db($dbname);
  return $this->ID;
} else {
  echo mysql_error();
  return 0;
}
 }

 function close() {
$result = @mysql_close($this->ID);
return $result;
 }

}

class RaQuery {
 var $result;
 var $row;
 var $SQL;
 var $trans;
 var $rowname;

 function query($sql="",$db = "") {
global $DB;
  if ($db == "") $db = $DB;
if ($sql != "") $this->SQL = $sql;

  $this->result = @mysql_query($this->SQL );

  if (!$this->result) {
		echo mysql_error();
	}
  return $this->result;

 }

 function execsql($db = "") {
global $DB;
  if ($db == "") $db = $DB;

  $this->result = @mysql_query($this->trans );

  if (!$this->result) {
		echo mysql_error();
	}
  return $this->result;
 }

 function getrow() {
$this->row = @mysql_fetch_array($this->result, MYSQL_ASSOC);
return $this->row;
 }

}

//Izmantošana

 $DB->connect("www.somthing.lv", "username", "passvord" , "database");
 if ($DB->ID == 0)
exit("Bljins, nekas nesanaak");
 $q = new RaQuery();

 $q->query("select name from users");

 while ($q->getrow()) {
  echo $q->row["name"];
 }

 $newname = "maita";
 $q->SQL = "update users set name = '$newname' where id = 1"; 
 $q->query();

Posted

reusojamā klasē rakstīt iekšā echo mysql_error(); nav smuki, jo tām ir jāstrādā bez jebkādu kļūdu rādīšanas - visas kļūdas jāliek kādā properijā,masīvā,vai log failos, bet ja lietojot tiešām gribēs parādīt kopā ar htmlu arī erroru, tad lai prasa un rāda ar echo $instance -> gimmeLastError();

×
×
  • Create New...