Adodb z mysql - nie działa zapytanie

Wątek przeniesiony 2015-03-09 20:53 z PHP przez dzek69.

0

Witam

Chciałbym nauczyć się korzystać z biblioteki adodb5. Czy będzie to możliwe, jeśli w OOP dopiero raczkuję?

Mam kod, jest to pseudo-logowanie. Kliknięcie przycisku Zaloguj się skutkuje wykonaniem się funkcji adodbLogin():

<?php

include('../libs/adodb5/adodb.inc.php');
include("../libs/adodb5/adodb-exceptions.inc.php"); 

$DB = ADONewConnection('mysql');
$DB->Connect("MOJE DANE DO ŁĄCZENIA SIĘ Z BAZĄ") or die('Brak połączenia z serwerem MySQL.');


function adodbLogin()
{
	try {
		$rs = $DB->Execute("SELECT USER_ID FROM USERS WHERE (LOGIN='".$login."') AND (PASS='".$pass."')");
		while ($array = $rs->FetchRow()) {
			print_r($array);
		}
	} catch (exception $e) {
		print_r($e);
	}
	
}


################### CIAŁO GŁÓWNE strony ######################

if(!isset($_GET['action']))
{
	echo'
	<form method="post" action="login.php?action=login">
	Login: <input type="text" name="login"><br>
	Hasło: <input type="password" name="pass"><br>
	<input type="submit" value="Zaloguj sie"><br>
	</form>';
}
else
{
	if($_GET['action'] == "login")
	{
		adodbLogin();
	}
}


?>

Niestety zwracany jest błąd:

Notice: Undefined variable: DB in E:\xampp\htdocs\sql-injection\login.php on line

Fatal error: Call to a member function Execute() on null in E:\xampp\htdocs\sql-injection\login.php on line

Czy ktoś potrafi mi wytłumaczyć o co chodzi?

dodanie znacznika <code class="none"> - @furious programming

1

Prawdopodobnie funkcja nie widzi zmiennej $DB. Użyj modyfikatora global w funkcji przy zmiennej $DB, lub przekaż zmienną DB w parametrze funkcji.

0

przekazanie zmiennej $db jako parametr pomogło, dzięki ;) z tego co wiem to bezkrytycznie powinno się unikać mod. global w php

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.