webForumDet fria alternativet

Nästlande funktioner

PHP

2 svar · 234 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Frågan#1
function show_menu() {
	
	##### ÖPPNAR DATABAS OCH VÄLJER DATABAS ##############################
	$conn = opendb($dbHost, $dbUser, $dbPassword);
	mysql_select_db($dbName);

	$SQL = mysql_query("SELECT pagename FROM tblSiteNavigation ORDER BY pagename") or die (mysql_error());
		
		while($objRS = mysql_fetch_array($SQL)) {
		echo "Sidnamn: <b>".$objRS[pagename]."</b> | ";
		}

	closedb($conn);
}

Är det möjligt att ha nästlande funktioner? Funktionen opendb($dbHost, $dbUser, $dbPassword); ligger i filen include.db.php utanför web-rooten. När jag försöker köra denna funktion som skall skriva ut en meny får jag upp felmeddelandet "Databaskopplingen EJ initierad!" som jag själv har angett ska komma upp om allt inte står rätt till.

Alla include-filer anropar jag i index.php i rätt ordning med hänsyn till i vilken ordning funktionerna används i index.php.

Jag har prövat att stoppa in variablerna $dbHost, $dbUser, $dbPassword och $dbName direkt i funktion dbopen och mysql_select_db och då fungerar det utan problem. Dock får jag ett felmeddelande på slutet när jag ska stänga databasen igen som ser ut så här:

Warning: mysql_close(): 6 is not a valid MySQL-Link resource in /XXX/include.db.php on line 26

Raden som ovanstående felmeddelande syftar på är mysql_close($conn); i nedanstående funktion:

function closedb($conn) {
	mysql_close($conn);
}

Någon idé? :)

Medlem sedan okt. 20001 285 inlägg
#2

variablerna måste igenom den första funktionen såvida dom inte är globala

function show_menu($dbHost, $dbUser, $dbPassword) {

$conn = opendb($dbHost, $dbUser, $dbPassword);

du har också func_get_args() och func_num_args() som är ganska nice http://se2.php.net/manual/sv/function.func-get-args.php

Medlem sedan apr. 20041 597 inlägg
#3

variablerna måste igenom den första funktionen såvida dom inte är globala.

function show_menu($dbHost, $dbUser, $dbPassword) {

$conn = opendb($dbHost, $dbUser, $dbPassword);

Nu har jag valt att mata funktionen som skall visa min meny med databasvariablerna. Om jag skulle välja att göra dessa variabler globala så skulle en funktion i funktionen känna igen dessa och därigenom har åtkomst till dem. Min fråga nu är om det är en säkerhetsrisk att göra dessa databasvariabler globala. Kan tillägga att dessa databasvariabler lagras utanför web-rooten.

Några synpunkter på detta? :)

254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)