---
title: "Ansluta till en db genom att anropa en funktion"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/15508-ansluta-till-en-db-genom-att-anropa-en-funktion"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "FlashX"
published: "2001-04-13T18:23:00.000Z"
updated: "2001-04-16T00:25:00.000Z"
replies: 10
views: 235
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/15508-ansluta-till-en-db-genom-att-anropa-en-funktion"
---

# Ansluta till en db genom att anropa en funktion

## #1 — FlashX, 2001-04-13T18:23Z

Om jag använder

```
$db = mysql_connect("localhost", "user", "passwd");
mysql_select_db("db_name", $db);
```

 i mitt php-dokument så fungerar det, fast istället för att använda koden på alla sidor, vill jag anropa en funktion istället.

Koden ser nu ut såhär:
I php-filen 

```
<? require "main.inc" ?>
<?
openDB();
o.s.v.
```

 och i main.inc har jag 

```
function openDB() {
$db= mysql_connect("localhost", "user", "passwd");
mysql_select_db("db_name", $db);
}
```

 men då fungerar det inte.

Hur gör jag för att ansluta och välja DB med function?

Permalänk: https://www.webforum.nu/p/15508

## #2 — Alpha II, 2001-04-13T18:29Z

Du måste skriva så här i mani.inc:

\<?php
function openDB() {
$db= mysql_connect("localhost", "user", "passwd");
mysql_select_db("db_name", $db);
}
?\>

Permalänk: https://www.webforum.nu/p/318164

## #3 — FlashX, 2001-04-13T19:09Z

Jo, det står så redan.
Jag har en header, menyer och lite annat och det funkar men inte just kopplingen till databasen.

Permalänk: https://www.webforum.nu/p/318165

## #4 — SPiN, 2001-04-13T19:27Z

Chansning: det kanske inte går att öppna objekt via en function som inte är medlem av en class!

Skapa en class och du kommer att lyckas med det du vill ;)

Permalänk: https://www.webforum.nu/p/318166

## #5 — LarsG, 2001-04-13T19:35Z

Är det inte så att variabler i en funktion bara har scope inom funktionen.

Man kan kanske skriva så här i stället

```

<?php
function openDB() {
$db= mysql_connect("localhost", "user", "passwd");
mysql_select_db("db_name", $db);
return $db;
}
?>
```

och anropa

```

  $db = openDB();
```

Permalänk: https://www.webforum.nu/p/318167

## #6 — FlashX, 2001-04-13T20:11Z

Jo, det fungerade :)
Tackar så mycket.

Permalänk: https://www.webforum.nu/p/318168

## #7 — SPiN, 2001-04-13T20:19Z

Juste så ere juh :)
Men det borde gå att komma runt. Prova med att sätta global $db... i funktionen. Möjligt att det funkar. 
Då slipper man ett objekt utanför funktionen som man ändå inte använder.

Permalänk: https://www.webforum.nu/p/318169

## #8 — spango, 2001-04-13T23:46Z

En annan variant vore ju:

```
function openDB() {
	if(defined("DBCONN")) return;
	define("DBCONN", mysql_connect("localhost", "user", "passwd"));
	mysql_select_db("db_name", DBCONN);
}
```

Så blir DBCONN en konstant. Asballt ;)

Permalänk: https://www.webforum.nu/p/318170

## #9 — FlashX, 2001-04-14T09:49Z

global $db; i function fungerar utmärkt :)
Nu kan jag ansluta och välja db med endast openDB(); vilket var målet.
Meningen är att det ska vara så enkelt som möjligt med anslutningen eftersom jag har ett par andra användare som hjälper till med sidan.
main.inc kommer att ligga utanför webbserverns DocumentRoot, vilket gör att den ej blir åtkomlig för dessa användare.

Hur väljer man db i ditt exempel spango.
Måste man ange det i själva php-filen då?

Är bara inne på mitt tredje dygn när det gäller PHP och mySQL, så man är ju lite färsk inom området :)

\[Redigerat av FlashX den 14 apr 2001\]

Permalänk: https://www.webforum.nu/p/318171

## #10 — spango, 2001-04-15T23:23Z

Öh, förstår inte riktigt vad du menar :q 
Den enda skillnaden mellan min och LarsG's variant är att i stället för att returnera en variabel (eller göra en global variabel - usch, nämn inte sånt i min närvaro ;) ) så deklareras en konstant, som alltid är global. När du du gör en query ser det alltså ut så här:

```
$result = mysql_query($dinFetaSQLSats, DBCONN); # Inget dollartecken
```

Dessutom klagar php-tolken om man försöker tilldela DBCONN ett annat värde än det som den fick från början.

Permalänk: https://www.webforum.nu/p/318172

## #11 — FlashX, 2001-04-16T00:25Z

Förstår inte heller vad jag menade :q
Troligen tillfälliga störningar bara :)

Permalänk: https://www.webforum.nu/p/318173

---

Tråden på webben: https://www.webforum.nu/amne/php/15508-ansluta-till-en-db-genom-att-anropa-en-funktion
