PHP - MySQL Klass

Avdelningen för webbrelaterad programmering och grafisk design.
Skriv svar
Användarvisningsbild
thr
Inlägg: 1242
Blev medlem: 2002-06-26 22:55:24
Ort: Skene
Kontakt:

PHP - MySQL Klass

Inlägg av thr » 2003-03-21 8:49:37

Knåpade ihop detta på en 20-30 min under kvällen nu, täntke posta det här, kanske folk som får användning för den.

Det är helt enkelt en class som du bara kör en funktion i för att sätta in/ta ut/tabort/ändra information i en mysqldatabas med... jag hade tänkt att använda den till en kod databas jag pillar på... men iaf, här är den:

Kod: Markera allt

<?php
// Mysql Class
// Version Beta 0.1
// By: thr
// Started: 2003-03-19
// Filename: Mysql.php
// Conatins: Class & Functions for doing various mysql requests

$host = "databasehost";
$username = "username";
$password = "password";
$database = "databasename";


// Start MySQL Class -->

class MySQL{

	// Function for connecting to the database
	function Connect(){
	
			// Get global vars
			global $host,$username,$password,$database;
				// Connect to MySQL and select database, If there were errors, give error msgs and exit
			if(!mysql_connect($host,$username,$password) || !mysql_select_db($database)){
				echo mysql_error(); return false; exit;}
				
			// Retrun true if all is succsessfull
			return true;}
				
	// Function for disconnecting to the database
	function Disconnect(){
	
			// Get global vars
			global $host,$username,$password;
				
			// Disconnect from MySQL and select database, If there were errors, give error msgs and exit
			if(!mysql_close(mysql_connect($host,$username,$password))){
				echo mysql_error(); return false; exit;}
					
			// Retrun true if all is succsessfull
			return true;}
				

	// Function for inserting values into a table and cells
	function Insert($table,$cols,$values){ // tablename,cols,values
	
			// Check so that no arguments were empty
			if($table == "" || $cols == "" || $values == ""){
				echo "One or more argument(s) was empty for function '<b>Insert</b>' in the class '<b>MySQL</b>'"; return false; exit;}
			
			// Connect to the database
			$this->Connect();
			
			// Do insert request, check for failure
			if(!mysql_query("INSERT INTO $table ($cols) VALUES($values)")){
				echo mysql_error(); return false; exit;}
				
			// Disconnect from the database
			$this->Disconnect();
				
				// Retrun true if all is succsessfull
				return true;}
	
	function Update($table,$cols,$values,$where){ // tablename,columns,values,where
		
			// Check so that no arguments were empty
			if($table == "" || $cols == "" || $values == "" || $where == ""){
				echo "One or more argument(s) was empty for function '<b>Update</b>' in the class '<b>MySQL</b>'"; return false; exit;}
				
			// Split values
			$values = explode(",",$values);
			
			// Split cells	
			$cols = explode(",",$cols);

			// Check so that $values and $cells have the same amount of values
			if(count($values) != count($cols)){
				echo "Array $colls ans array $values did not have the same amount of values in function '<b>Update</b>' in the class '<b>MySQL</b>'"; return false; exit;}

			// Get the correct SET MySQL syntax
			for($i=0;$i < count($values);$i++){
				$set .= $cols[$i] . "='" .$values[$i] . "'";
				if($i < count($values)-1){
					$set .= ",";}}
					
			// Connect to the database
			$this->Connect();
			
			// Do update request
			if(!mysql_query("UPDATE $table SET $set WHERE $where")){
				echo mysql_error(); return false; exit;}
				
			// Disconnect from the database
			$this->Disconnect();
		
				// Retrun true if all is succsessfull
				return true;}
				
	function Delete($table,$where,$limit){ // tablename,where,limit
		
			// Check so that no arguments were empty
			if($table == "" || $where == "" || $limit == ""){
				echo "One or more argument(s) was empty for function '<b>Delete</b>' in the class '<b>MySQL</b>'"; return false; exit;}
			
			// Connect to the database
			$this->Connect();
			
			// Do Delete request
			if(!mysql_query("DELETE FROM $table WHERE $where LIMIT $limit")){
				echo mysql_error(); return false; exit;}
			
			// Disconnect from the database
			$this->Disconnect();
		
				// Retrun true if all is succsessfull
				return true;}
	
	function Select($table,$cols,$where="",$limit="",$orderby=""){ // table,columns,where,limit,orderby returns an array.

			// Check so that no required arguments were empty
			if($table == "" || $cols == ""){
				echo "One or more argument(s) was empty for function '<b>Select</b>' in the class '<b>MySQL</b>'"; return false; exit;}
			
			// Check for WHERE statement	
			if($where != ""){
				$set .= " WHERE $where";}
				
			// Check for ORDER BY statement
			if($orderby != ""){
				$set .= " ORDER BY $orderby";}
				
			// Check for LIMIT statement
			if($limit != ""){
				$set .= " LIMIT $limit";}
				
			// Connect to the database
			$this->Connect();
				
			// Do Select request
			$query = mysql_query("SELECT $cols FROM $table$set");
			while($sql_result = mysql_fetch_array($query,MYSQL_NUM)){ $array[] = $sql_result;}
				
			// Disconnect from the database
			$this->Disconnect();
					
		// Return asociative array	
		return $array;}
	
	
	// <-- End Class
}
?>
[/size]

Exempel:

Kod: Markera allt



$mysql = new MySQL;

// Insert exempel:
$mysql->Insert("tabell","cell1,cell2,cell3","värde1,värde2,värde3);

// Update exempel:
$mysql->Update("tabell","cell1,cell2","nyttvärde1,nyttvärde2","id=3");

// Delete exempel:
$mysql->Delete("tabell","id=1","1");

// Select exempel(Returnerar en asociative array):
$mysql->Select("tabell","*","usertype=2","5","id");
Vet inte om det kommer att hjälpa folk, men det kanske de gör.. är bara grundläggande funktioner änsålänge.. ska göra den bättre

Användarvisningsbild
Gussoh
Inlägg: 974
Blev medlem: 2002-05-09 11:32:06
Ort: Mölndal
Kontakt:

Inlägg av Gussoh » 2003-03-21 8:59:38

du får göra en funktion i klassen till vilken man kan skicka en ren SQL-fråga me ;))
Jag tycker att grön är en fin färg.

Användarvisningsbild
thr
Inlägg: 1242
Blev medlem: 2002-06-26 22:55:24
Ort: Skene
Kontakt:

Inlägg av thr » 2003-03-21 9:09:36

Gussoh skrev:du får göra en funktion i klassen till vilken man kan skicka en ren SQL-fråga me ;))
Jag vet ;) glömt de :P

jstrom
Inlägg: 1732
Blev medlem: 2002-05-28 22:18:35
Ort: Göteborg
Kontakt:

Inlägg av jstrom » 2003-03-21 15:55:01

Vettigare vore ju då, om du nu ska lägga energi på det, att göra en allmän SQL-klass istället, som kan interface'a till både mysql och postgresql (och fler om det e nån som använder det..) :)

Användarvisningsbild
thr
Inlägg: 1242
Blev medlem: 2002-06-26 22:55:24
Ort: Skene
Kontakt:

Inlägg av thr » 2003-03-21 17:13:50

jstrom skrev:Vettigare vore ju då, om du nu ska lägga energi på det, att göra en allmän SQL-klass istället, som kan interface'a till både mysql och postgresql (och fler om det e nån som använder det..) :)
mysql über alles.

Användarvisningsbild
Gussoh
Inlägg: 974
Blev medlem: 2002-05-09 11:32:06
Ort: Mölndal
Kontakt:

Inlägg av Gussoh » 2003-03-21 19:17:38

haha.. jag vet inte om du förstod det, men jag var ju ironisk när jag menade att man skulle göra en funktion för ett sqlutryck. jag menade att klassen ju var helt onödig, om inte innan så verkligen då... vad är det för fel på vanliga sqlfrågor? :)
Jag tycker att grön är en fin färg.

jstrom
Inlägg: 1732
Blev medlem: 2002-05-28 22:18:35
Ort: Göteborg
Kontakt:

Inlägg av jstrom » 2003-03-21 23:38:17

Gussoh skrev:haha.. jag vet inte om du förstod det, men jag var ju ironisk när jag menade att man skulle göra en funktion för ett sqlutryck. jag menade att klassen ju var helt onödig, om inte innan så verkligen då... vad är det för fel på vanliga sqlfrågor? :)
12åringar kan inte skriva dom? ;) Nä jag frågar mig det samma.. Skulle aldrig använda nått sånt som tex mySQL.Select("blah", "blah,blah,blah") för o få fram nått... då kör jag helre "SELECT blah, blah, blah FROM blah"...mckt renare och tydligare :) SPECIELLT för sånna som inte känner till klassen ;)

Användarvisningsbild
thr
Inlägg: 1242
Blev medlem: 2002-06-26 22:55:24
Ort: Skene
Kontakt:

Inlägg av thr » 2003-03-22 0:55:12

Gussoh skrev:haha.. jag vet inte om du förstod det, men jag var ju ironisk när jag menade att man skulle göra en funktion för ett sqlutryck. jag menade att klassen ju var helt onödig, om inte innan så verkligen då... vad är det för fel på vanliga sqlfrågor? :)
Tycker jag verkligen inte

Man får bätter struktur, du slipper använde separata funktioner för connect / disconnect varje gång du ska köra en fråga.
Lätt att förstå för folk som inte är så insatta i mysql :P vi ska inte vara så neggativa gussoh ;>

jstrom
Inlägg: 1732
Blev medlem: 2002-05-28 22:18:35
Ort: Göteborg
Kontakt:

Inlägg av jstrom » 2003-03-22 2:13:04

thr skrev:
Gussoh skrev:haha.. jag vet inte om du förstod det, men jag var ju ironisk när jag menade att man skulle göra en funktion för ett sqlutryck. jag menade att klassen ju var helt onödig, om inte innan så verkligen då... vad är det för fel på vanliga sqlfrågor? :)
Tycker jag verkligen inte

Man får bätter struktur, du slipper använde separata funktioner för connect / disconnect varje gång du ska köra en fråga.
Lätt att förstå för folk som inte är så insatta i mysql :P vi ska inte vara så neggativa gussoh ;>
Och hur många minuter tar det o gå igenom www.sqlcourse.com?? Efter o ha kört den kan du nog tillräckligt..

Dessutom connect sköter man ju normalt sett genom att bara köra include på sin database.inc ;) och disconnect behöver du inte bry dig om då php gör det automatistk, även om jag i min database.inc brukar använda register_shutdown_function och däri stänga..

Användarvisningsbild
thr
Inlägg: 1242
Blev medlem: 2002-06-26 22:55:24
Ort: Skene
Kontakt:

Inlägg av thr » 2003-03-22 11:59:28

har gjort om den lite.. ser något bättre ut nu ;) aja ajg gillar iaf att ha det såhära :P

dannemano
Inlägg: 9
Blev medlem: 2003-03-19 10:32:25
Ort: Linken

Inlägg av dannemano » 2003-03-22 12:09:31

Happy hacking på hög nivå ju! Jag håller med om att nyttan med klassen kan diskuteras men thr gillar ju php, de e tydligt.

Användarvisningsbild
Gussoh
Inlägg: 974
Blev medlem: 2002-05-09 11:32:06
Ort: Mölndal
Kontakt:

Inlägg av Gussoh » 2003-03-22 12:36:51

ja, appropå det.. hur gör den med databasanslutningar? skapar den en ny anslutning för varje fråga?
Jag tycker att grön är en fin färg.

Användarvisningsbild
thr
Inlägg: 1242
Blev medlem: 2002-06-26 22:55:24
Ort: Skene
Kontakt:

Inlägg av thr » 2003-03-22 12:45:34

Gussoh skrev:ja, appropå det.. hur gör den med databasanslutningar? skapar den en ny anslutning för varje fråga?
inte längre.

Användarvisningsbild
Gussoh
Inlägg: 974
Blev medlem: 2002-05-09 11:32:06
Ort: Mölndal
Kontakt:

Inlägg av Gussoh » 2003-03-22 13:03:44

bra.. du som vill att din kod ska vara snabb =)
att skapa anslutningen tar ju lika lång tid som att köra 100 frågor eller nåt =)
Jag tycker att grön är en fin färg.

Skriv svar