Funktioner för databashantering i PHP

augusti 12th, 2010 by Kristoffer Leave a reply »

PHPGick igenom min utvecklingshårddisk (sommarstädning) och hittade några roliga databasfunktion som jag kodade ihop för cirka ett år sedan när jag hade tråkigt. Tyvärr verkar det som att jag inte fixade till delete-funktionen, så den får ni vara utan tills att jag får tid att göra det. De andra funktionerna ska fungera, gör dem inte det så hojta till.

Funktionerna är ganska simpla, inte det bästa jag gjort, kan skrivas bättre! De klarar också bara av de absolut enklaste SQL-frågorna.

Ni får använda det här hur ni vill. Se dock till att er webbserver har stöd för PDO.

PHP-fil för att hantera databasanslutningen

<?php
$hostname = 'localhost'; // Adress till databasen
$usr = ''; //Användarnamn för databasen
$pwd = ''; //Lösenord för databasen
$database = ''; //Namnet på databasen
 
//Följande skapar själva anslutningen till databasen
try {
$db_connect = new PDO("mysql:host=$hostname;dbname=$database", $usr, $pwd);
	}
 
catch(PDOException $e)
    {
echo $e->getMessage();
    }
?>

PHP-fil med funktionerna

<?php
/*########################################*/
/*################ SELECT ###################*/
/*########################################*/
function dbSelect($table, $field, $query, $attributes, $output) {
require ("connect.php");
 
$dbQuery 	= null;
$dbType 	= null;
$attribute	= null;
 
	if($query) {
		foreach($query as $id => $value) {
			$dbQuery .= $id." = :".$id.' AND ';
		}	
		$dbQuery = " WHERE"." ".$dbQuery;
		$dbQuery = substr($dbQuery, 0, -5);
	}
	$dbQuery = trim($dbQuery);
 
	foreach($attributes as $id => $att) {
		$attribute .= " ".$id." ".$att;
	}
 
	$do = $db_connect->prepare("SELECT $field FROM $table $dbQuery $attribute");
 
	foreach($query as $id => $value) {
		switch(is_int($value)) {
			case true: 	$dType = PDO::PARAM_INT; break;
			case false:	$dType = PDO::PARAM_STR; break;
		}
		$do->bindValue(':'.$id, $value, $dbType);
		unset($value);
	}
	$do->execute();
	switch($output) {
		case "all": $result = $do->fetchAll();
	break;
		case "item": $result = $do->fetch(PDO::FETCH_OBJ);
	break;
	}
 
return $result;
}
 
/*############################################*/
/*################# INSERT ######################*/
/*############################################*/
 
function dbInsert($table, $insert) {
require ("connect.php");
 
$fields = null;
$values = null;
 
	foreach($insert as $id => $value) {
		$fields .= $id.", ";
		$values .= ":".$id.", ";
	}
 
	$fields = substr($fields, 0, -2);
	$values = substr($values, 0, -2);
 
	$do = $db_connect->prepare("INSERT INTO $table ($fields) VALUES ($values)");
	foreach($insert as $id => $value) {
		$do->bindParam(':'.$id, $value);
		unset($value);
	}	
	$do->execute();
}
 
/*#############################################*/
/*################## UPDATE #####################*/
/*############################################*/
 
function dbUpdate($table, $sets, $wheres) {
require ("connect.php");
 
	$where = null;
	$set = null;
 
	foreach($wheres as $id => $value) {
		$where .= $id.' = '."'$value'".' AND ';
	}
	$where = " WHERE"." ".$where;
	$where = substr($where, 0, -5);
 
	foreach($sets as $id => $value) {
		$set .= $id."=:".$id.", ";
	}
 
	$set = "SET ".$set;
	$set = substr($set, 0, -2)." ";
 
	$do = $db_connect->prepare("UPDATE $table $set $where");
	foreach($sets as $id => $val) {
		$do->bindParam(':'.$id, $val);
		unset($val);
	}
	$do->execute();
}

Hur man använder funktionerna

/* SELECT */
$selects = dbSelect("namn på tabellen", "fält1,fält2,fält3",			
			$where = array(
				"fältnamn" => "data",
			), 
			$attributes = array (
                               "ORDER BY" => "fältnamn desc"
			),
			$output = "item"
	  );
 
/* För att skriva ut en hämtad rad (lägg märke till att $output = "item" */
echo $selects->id;
 
/* Sätt output till "all" om du hämtar flera rader*/
$output => "all"
 
/* Om output är satt till "all" kan du göra så här för att lista det som hämtats */
foreach($selects as $id => $row) {
	echo $row["fältnamn1"];
	echo $row["fältnamn2"];
	//etc....
}
 
/* attributes används när man vill ha LIMIT eller ORDER BY */
$attributes = array (	
			"ORDER BY"=> "name DESC",
			"LIMIT" => 5,
			 ),
 
 
/*
#####################################
#####################################
#####################################
*/
 
/* INSERT */
dbInsert("tabellnamn",
		$insert = array(
			"fältnamn1" =>"värde1",
			"fältnamn2" =>"värde",
		)
	);
 
 
/*
#####################################
#####################################
#####################################
*/
 
/* UPDATE*/
dbUpdate("tabellnamn",
		$change = array(
			"fältnamn1" =>"värde1",
			"fältnamn2" =>"värde",
		)
	);
Advertisement

Kommentera