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);
}
?>
------------------
[klicka exakt precis här]
10 svar · 232 visningar · startad av FlashX
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?
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);
}
?>
------------------
[klicka exakt precis här]
Jo, det står så redan.
Jag har en header, menyer och lite annat och det funkar men inte just kopplingen till databasen.
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 ;)
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 13 apr 2001]
Ä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();
------------------
essentitia preter non sans multiplicandum
Jo, det fungerade :)
Tackar så mycket.
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.
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 13 apr 2001]
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 ;)
------------------
Life feeds on life feeds on life feeds on life feeds on life...
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]
Ö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.
------------------
Life feeds on life feeds on life feeds on life feeds on life...
[Redigerat av spango den 16 apr 2001]
Förstår inte heller vad jag menade :q
Troligen tillfälliga störningar bara :)