Kom ihåg mig?
Home Menu

Menu


Funktion för att connecta till Mysql databas

 
Ämnesverktyg Visningsalternativ
Oläst 2013-06-13, 22:27 #1
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Citat:
Ursprungligen postat av Legendarisk Visa inlägg
Hej,
Håller på att snickra ihop ett simpelt inloggnings system i PHP och försöker göra själva kopplingen till databasen så enkel som möjligt.

Jag har flertalet funktioner vid själva inloggningen som behöver connecta till databasen (exempelvis kolla att username finns osv).

Därför har jag gjort en egen funktion för detta i en separat fil som ser ut som följande:

PHP-kod:
function connect_to_db() {

    
$db = new mysqli('localhost''namn''lösen''databasen');

    
//Check db error
    
if (mysqli_connect_errno()) {
        echo 
'Sorry, we are experiencing connection problems.';
        exit;
    } 
    
    return 
$db;


varav de andra funktionerna sedan använder db för att köra queryn.

Det jag undrar är om det är ok i olika avseenden att göra på detta sätt, eller finns det något annorlunda sätt som är att föredra? Tänker på både säkerhetsaspekter och hastighet.

Tack på förhand.
Din kod går utmärkt att bygga vidare på, det som gäller är bara att du inkluderar filen där funktionen finns + inte skapar en ny anslutning för varje fråga.

PHP-kod:
<?php
function connect_to_db() {
    static 
$db null;
    if (
is_null($db) || !$db->ping()) {
        
$db = new mysqli('localhost''namn''lösen''databasen');
        if (
mysqli_connect_errno()) {
            echo 
'Sorry, we are experiencing connection problems.';
            exit();
        }
    }
    return 
$db;
}
Jake.Nu är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-14, 09:33 #2
Legendarisk Legendarisk är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2012
Inlägg: 359
Legendarisk Legendarisk är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2012
Inlägg: 359
Citat:
Ursprungligen postat av Jake.Nu Visa inlägg
Din kod går utmärkt att bygga vidare på, det som gäller är bara att du inkluderar filen där funktionen finns + inte skapar en ny anslutning för varje fråga.

PHP-kod:
<?php
function connect_to_db() {
    static 
$db null;
    if (
is_null($db) || !$db->ping()) {
        
$db = new mysqli('localhost''namn''lösen''databasen');
        if (
mysqli_connect_errno()) {
            echo 
'Sorry, we are experiencing connection problems.';
            exit();
        }
    }
    return 
$db;
}
Tack för tipset!

Vad innebär det att vi sätter $db till NULL där i början?

Skulle ett alternativ kunna vara att man kör $db->close() i funktionerna som anropar connect_to_db funktionen?

Senast redigerad av Legendarisk den 2013-06-14 klockan 09:36
Legendarisk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-06-14, 09:48 #3
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Ursprungligen postat av Legendarisk Visa inlägg
Tack för tipset!

Vad innebär det att vi sätter $db till NULL där i början?

Skulle ett alternativ kunna vara att man kör $db->close() i funktionerna som anropar connect_to_db funktionen?
Nej, en variabel som är static behåller sitt värde efter att funktionen avslutas
så att sätta den till null görs bara första gången den används.

Nästa gång funktionen anropas hämtas den befintliga Connection och du får därmed bara en Connection till databasen, vilket spar resurser och exekveringstid.
Conny Westh ä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 00:46.

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