Jump to content
php.lv forumi

MySQL klase


Trac3 !!

Recommended Posts

Sveiki.

 

Vēlos, lai jūs novērtējat, palabojat šo mysql klasi, gaidu ari ieteikumus, ko uzlabot, pielikt klāt vai atnemt nost :)

 

Links uz klases kodu..

 

http://paste.php.lv/c2d23691ef207838132e68e189b81b3d?lang=php

 

Uzlabotā versija:

 

http://paste.php.lv/fa459bd4fef70eb6b381ac373eac9c0d?lang=php

 

Upgrade 2:

 

http://paste.php.lv/9cb55f79745bdddf0c6ff381c055c6ac?lang=php

 

Daži piemēriņi kā lietot klasi.


//mysql savienojuma izveide
include("../secure/classes/mysql.class.php");
$sql = new MySQL("elisits", "elisitsparole", "elisits");

$sql->query("INSERT INTO users VALUES('', 'Trac3', 'parole')");
$sql->query("INSERT INTO users VALUES('', %s, %s)", "lietotajs", "parole");
$sql->query("INSERT INTO users VALUES('', 'Trac3 otrais', 'parole')");
$sql->query("INSERT INTO users VALUES('', %s, %s)", "lietotajs otrais", "parole");

$data = $sql->getResult("SELECT * FROM users");
for($i=0;$i<count($data);$i++){
echo $data[$i]->UID." - ".$data[$i]->name." - ".$data[$i]->pass."<br />";
}

echo $sql->getVar("SELECT name FROM users WHERE UID=2")."<br />";

$sql->query("SELECT * FROM users WHERE UID < 3");
$data2 = $sql->getResult();
for($i=0;$i<count($data2);$i++){
echo $data2[$i]->UID." - ".$data2[$i]->name." - ".$data2[$i]->pass."<br />";
}

$data3 = $sql->getRow();
echo $data3->UID." - ".$data3->name." - ".$data3->pass."<br />";

$data3 = $sql->getRow(false, 1); // x un y skaitishana no nulles :)
echo $data3->UID." - ".$data3->name." - ".$data3->pass."<br />";

echo $sql->getVar()."<br />";

echo $sql->getVar(false, 2, 1)."<br />";

$sql->query("SELECT * FROM hkfadjs"); //neeksistejosha tabula lai apskatitos kludas pazinojumu :)
echo $sql->getError();

Edited by Trac3 !!
Link to comment
Share on other sites

labs darbs,

varu papildus ieteikt funkciju kura reize veic query un reize nosaka affected rows

 

function queryz($query, $err=1){//echo "<br><span class=red>".$query."</span>";
	$r = mysql_query ($query);
	if(!$r) if($err==0){echo($this->error($query, mysql_error()));}elseif($err==1){die($this->error($query, mysql_error()));}
	$this->$sqlasijumi++;
	$r=mysql_affected_rows();return ($r>0)?$r:false;
}

pielietojums:

$rez = $sql_db->queryz("UPDATE ".KOM_TABLE." SET uid = '".$sql_db->esc($id2)."',zid = '".$sql_db->esc($id3)."',msg='".$sql_db->esc($id4)."' WHERE ID ='".$sql_db->esc($id1)."'");
if($rez){
//
}

vel var noderet kludu logosana failaa

Edited by ziemelis
Link to comment
Share on other sites

Kāpēc gan labāk DB klasi netaisīt kā singletona paternu, kurš ekstendo standarta mysqli klasi un pielikt dažas funkcijas automātiskai eskeipošanai un izmantot autoload funkciju klases ielādei. Labumi no tā ir tādi, ka nav jāuztraucas par includes likšanu, nav jāuztraucas par klases instances izveidošanu un piekonektēšanos DB.

 

Piemēram, izmantojot šādu klasi, es jebkurā vietā varu rakstīt šādi, un veiksmīgi tiks izsaukt kverijs - bez includēm un konekciju rakstīšanām:

Protams, tas viss ir MVC freimworka ietvaros.

 

 

LDb::i()->q('SELECT ....');

 

LDb::i() - izsauc klases funkciju statiski, kura pārbauda vai ir jau instance izveidota, ja nav tad izveido, piekonektējas un atgriež klases instanci.

Link to comment
Share on other sites

DB konekciju nevajag likt kā singleton freimworka kontekstā - ir diezgan daudz scenāriji, kur jāslēdzas dažādām DB / ar dažādiem lietotājiem.

 

P.S. par funkciju nosaukumu ar vienu zīmi un obscured klašu nosaukumu veidošanu vajadzētu nocirst pirkstus un mūžīgi banot no datora lietošanas.

Edited by krikulis
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...