PHP - MySQL Klass

Avdelningen för webbrelaterad programmering och grafisk design.
Post Reply
User avatar
thr
Posts: 1242
Joined: 2002-06-26 22:55:24
Location: Skene
Contact:

PHP - MySQL Klass

Post by thr »

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:

Code: Select all

<?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:

Code: Select all



$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
User avatar
Gussoh
Posts: 974
Joined: 2002-05-09 11:32:06
Location: Mölndal
Contact:

Post by Gussoh »

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.
User avatar
thr
Posts: 1242
Joined: 2002-06-26 22:55:24
Location: Skene
Contact:

Post by thr »

Gussoh wrote: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
Posts: 1732
Joined: 2002-05-28 22:18:35
Location: Göteborg
Contact:

Post by jstrom »

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..) :)
User avatar
thr
Posts: 1242
Joined: 2002-06-26 22:55:24
Location: Skene
Contact:

Post by thr »

jstrom wrote: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.
User avatar
Gussoh
Posts: 974
Joined: 2002-05-09 11:32:06
Location: Mölndal
Contact:

Post by Gussoh »

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
Posts: 1732
Joined: 2002-05-28 22:18:35
Location: Göteborg
Contact:

Post by jstrom »

Gussoh wrote: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 ;)
User avatar
thr
Posts: 1242
Joined: 2002-06-26 22:55:24
Location: Skene
Contact:

Post by thr »

Gussoh wrote: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
Posts: 1732
Joined: 2002-05-28 22:18:35
Location: Göteborg
Contact:

Post by jstrom »

thr wrote:
Gussoh wrote: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..
User avatar
thr
Posts: 1242
Joined: 2002-06-26 22:55:24
Location: Skene
Contact:

Post by thr »

har gjort om den lite.. ser något bättre ut nu ;) aja ajg gillar iaf att ha det såhära :P
dannemano
Posts: 9
Joined: 2003-03-19 10:32:25
Location: Linken

Post by dannemano »

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.
User avatar
Gussoh
Posts: 974
Joined: 2002-05-09 11:32:06
Location: Mölndal
Contact:

Post by Gussoh »

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.
User avatar
thr
Posts: 1242
Joined: 2002-06-26 22:55:24
Location: Skene
Contact:

Post by thr »

Gussoh wrote:ja, appropå det.. hur gör den med databasanslutningar? skapar den en ny anslutning för varje fråga?
inte längre.
User avatar
Gussoh
Posts: 974
Joined: 2002-05-09 11:32:06
Location: Mölndal
Contact:

Post by Gussoh »

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