Kom ihåg mig?
Home Menu

Menu


Funktion för att connecta till Mysql databas

 
Ämnesverktyg Visningsalternativ
Oläst 2013-06-14, 10:44 #1
corneliisandberg corneliisandberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2012
Inlägg: 33
corneliisandberg corneliisandberg är inte uppkopplad
Nykomling
 
Reg.datum: Oct 2012
Inlägg: 33
Hej Legendarisk!
Jag tycker din approach fungerar och om du inkluderar db-filen på de sidor du hämtar data ifrån kommer det också fungera bra oavsett metoderna OOP eller procedurbaserad programmering.

Om du ska skriva klasser/funktioner som nämns ovan tycker jag att du istället för mysqli tittar på PDO connections istället. Då uppnår du minst två saker. 1, du kan byta databasleverantör när du vill och 2 grundläggande sql-injectionskydd om du använder dig av prepare() metoden. PDO har de nödvändiga klasser för att du skall kunna bygga och gå vidare. Enda tråkiga som jag upplever är att du inte kan få sql-frågan utskriven (pratbar) om du använder execute() metoden. Men det löser man på annat sätt.

Tänk också såhär. När dagen är slut finns det två sorters kod, den som fungerar och den som inte fungerar. Sensmoralen är nog att; bygg på, skapa intressanta webblösningar och bli framgångsrik. Men såklart är eftertanke redan innan man startar att föredra men låt inte det bli ett ok bara.

Citat:
Exempel på PDO
$db = new PDO('mysql:host='.$host.';dbname='.$database, $usr, $pwd);

Sedan kan en query se ut så här istället för tradiotionell mysqli_query()
$sql = "SELECT * FROM table
WHERE table.id =? ORDER BY name";

$params = array( $id );
$stm = $db->prepare($sql);
$stm->execute($params);

Ge järnet!
corneliisandberg är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-14, 11:30 #2
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
Om du vill undvika att anropa en connect funktion när db används så kan enkapsulera denna funktionalitet, t.ex i en basklass, och ha en eller flera olika dataklasser

class MyData extends BaseData
{
public function getSomething($id)
{
return $this->db->getRow("SELECT * FROM table WHERE id=? LIMIT 1", $id);
}
}

$o = new MyData ();
$row = $o->getSomething();
echo $row->column1;
danjel är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-14, 16:40 #3
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av corneliisandberg Visa inlägg
Hej Legendarisk!
Jag tycker din approach fungerar och om du inkluderar db-filen på de sidor du hämtar data ifrån kommer det också fungera bra oavsett metoderna OOP eller procedurbaserad programmering.

Om du ska skriva klasser/funktioner som nämns ovan tycker jag att du istället för mysqli tittar på PDO connections istället. Då uppnår du minst två saker. 1, du kan byta databasleverantör när du vill och 2 grundläggande sql-injectionskydd om du använder dig av prepare() metoden. PDO har de nödvändiga klasser för att du skall kunna bygga och gå vidare. Enda tråkiga som jag upplever är att du inte kan få sql-frågan utskriven (pratbar) om du använder execute() metoden. Men det löser man på annat sätt.

Tänk också såhär. När dagen är slut finns det två sorters kod, den som fungerar och den som inte fungerar. Sensmoralen är nog att; bygg på, skapa intressanta webblösningar och bli framgångsrik. Men såklart är eftertanke redan innan man startar att föredra men låt inte det bli ett ok bara.

Ge järnet!
Att objektorienterad kod kommit att dominera beror inte på att den vid första iterationen och första anblicken verkar fungera bättre. Det beror på koden blir lättare att läsa, underhålla, utöka, återanvända och testa. Så fort man har gått förbi första iterationen så är det av stor vikt. Visst, har du ett par hundra raders sajt kan du göra en första iteration med funktionell programmering. Men sen skapar du dig bara en större och större teknisk skuld ju längre projektet lever vidare. Sen slutar det med i att du måste skriva om hela projektet i ett stadie och det blir inte alltför sällan döden.

Därmed tycker jag det är svårt att svara på frågan i tråden. Vill man hjälpa till att snygga till en funktionell röra så gott det går (som de flesta), eller vill man hjälpa till att skapa en vettig struktur (som ConnyWesth).

Däremot håller jag med dig om PDO, av lite andra anledningar. MySQLi har också prepared statements som är lika säkra. Och att byta databas för ett långlivat projekt är till 99% att skriva om frågor och struktur. Att köra ett par regexp replace över kodbasen gör inte stor skillnad. Däremot har PDO ett par funktioner som mysqli saknar. T ex lite smidigare vid flera parametrar till prepared statements och möjligtheten att direkt mappa mot ett eget objekt (motsvarigheten hos PDO mappar till en stdClass).
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:10.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017