Połączenie z baza dancyh
karolo_k
19.10.2010
Witam ja mam problem z połączeniem z baza danych. Używam prostego skryptu do przetestowania połączenia. Skrypt:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'login'@'94-23-92-159.kimsufi.com' (using password: YES) in /home/nazwakonta/domains/domena.pl/public_html/db/test.php on line 2
<?php if(!mysql_connect('localhost','login','haslo')){ return 'niepolaczono'; } else { return 'polaczono'; } ?>niezwraca żadnej wartości, poprostu mam biała karta a gdy zmienie na tak:
<?php if(!mysql_connect('94.23.92.159','login','haslo')){ return 'niepolaczono'; } else { return 'polaczono'; } ?>To mam komunikat tego pytu:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'login'@'94-23-92-159.kimsufi.com' (using password: YES) in /home/nazwakonta/domains/domena.pl/public_html/db/test.php on line 2
DarkGL
19.10.2010
<?php if(!mysql_connect('94.23.92.159','login','haslo')){ echo "niepolaczono"; } else { echo "polaczono"; } ?>
karolo_k
19.10.2010
OK mam polaczono. Teraz korzystam z takiego skryptu na wyciągniecie czegoś z bazdy:
<?php function db_connect() { $conn = mysql_connect('94.23.92.159','login','haslo' ); if(!$conn) { echo mysql_error(); exit; } if(!$db = mysql_select_db("cs......")) { echo mysql_error(); exit; } return $conn; } function get_user($useremail,$userpassowrd) { db_connect(); $query = sprintf(" SELECT * FROM users WHERE email='$useremail' AND password = '$userpassowrd'" ); $result = mysql_query($query); $row = mysql_fetch_assoc($result); return $row; } $a = get_user('[email protected]','haslo'); print_r($a); echo '<br>'; echo $a['name']; ?>I mam problem
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/kar.....html/db/db_fns.php on line 23A linia 23 to
$row = mysql_fetch_assoc($result);Niemam pojęcia co jest źle bo dopiero raczuje w tym
Portek
19.10.2010
Czy to nie z Tobą wałkowałem ten temat na WHT? Dałem tam gotowy przykład użycia który sprawdziłem... Swoją drogą korzystając z funkcji wypadało by wiedzieć jak ich używać... Securing your MySQL Queries with Sprintf - TalkPHP
Co oznacza błąd? Niewiele więcej jak fakt że zapytanie zwróciło pusty wynik - skrypt powyżej uwzględnia ten fakt.
@Down
-PainKiller- - Twój kod jest bardziej nieczytelni niż ten w pierwszym poście...
<?php
function db_connect() {
global $conn;
if($conn)
return $conn;
$conn = mysql_connect("localhost","test","test" ) or die('Could not connect to mysql server.' );
mysql_select_db("test") or die('Could not select database.');
return $conn;
}
function get_user($useremail,$userpassowrd) {
global $conn;
db_connect();
$query = sprintf("SELECT * FROM users WHERE email='%s' AND password = '%s'",
mysql_real_escape_string($useremail),
mysql_real_escape_string($userpassowrd)
);
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
if ($row)
return $row;
return $error;
}
$a = get_user('asd','asd');
if ($a) {
print_r($a);
echo '<br>';
echo $a['name'];
} else { echo "Błędny email, lub hasło!"; }
?>
Co oznacza błąd? Niewiele więcej jak fakt że zapytanie zwróciło pusty wynik - skrypt powyżej uwzględnia ten fakt.
@Down
-PainKiller- - Twój kod jest bardziej nieczytelni niż ten w pierwszym poście...
Portek
19.10.2010
-PainKiller- 19.10.2010
zły jest argument funkcji, podejrzewam że nie można jako argument podawać funkcję
szczerze mowiac nie znam funkcji ktorych uzywasz dlatego proponuję, wydaje mi sie łatwiejszy kod;
szczerze mowiac nie znam funkcji ktorych uzywasz dlatego proponuję, wydaje mi sie łatwiejszy kod;
$q = "SELECT * FROM users WHERE email='$useremail' AND password = '$userpassowrd'"; //zapytanie sqlowskie do pamieci
$r = @mysqli_query($polaczZBaza, $q); //przesył polecenia sql na serw mysql @ jest opcjonlana, jak masz malpe to ci nie podaje komunikatow o bledach w przegladarce... a argumenty podajesz polaczenie z baza dlatego teraz ci podam jak inaczej sie polaczyc
DEFINE('USER', 'uzytkownik'); //definiujesz swoje dane
DEFINE('HASLO', 'haslo');
DEFINE('HOST', 'localhost');
DEFINE('NAZWA', 'nazwa');
$polaczZBaza = @mysqli_connect(HOST, USER, HASLO, NAZWA) OR die ('brak polaczenia z mysql blablabal error: ' . mysqli_connect_error());
//i teraz masz $polaczZBaza dawac w argumencie funkcji wyzej opisanej mysqli_query
//teraz trzeba jakos te dane zrzutowac na ekran wiec mozesz taka technika
if($r){ // tu mowisz do serwera "wykonaj to co masz pod $r a nastepnie jesli nie miales problemow to wykonaj instrukcje zawarte w klamerkach
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { //tutaj jest stworzona zmienna wielowymiarowa (tablica) wielowymiarowa dlatego ze bedzie rzutowana po kolei a wiec //masz wyciagniete wszystkie rekordy naraz oczywiscie jesli w poleceniu $q nie podales ze chcesz 1 i teraz robimy rzutowanie w taki sposob ze....
echo ' . $row['nazwa'] . '<br />'; //to masz wypisane wszystkie wartosci z tablicy po kolei ale tylko te co nazwales jako nazwa a zeby takie miec (pod nazwą "nazwa" to trzeba //query zrobic tak
/*
"SELECT CONCAT(imie, nazwisko)AS nazwa FROM nazwabazy"
to znaczy zgrupuj mi z tabeli imie i nazwisko pod kryptonim "nazwa" FROM nazwabazy
a bez grupowania to
SELECT FROM nazwabazy (nazwa)
tu musisz dawac juz takie nazwy jak masz nazwy kolumn w bazie.... moglem zapomniec o '' lub "" nie pamietam dokladnie...
*/
}
} //koniec if $r
else {
echo "zle wykonane polecenie pod zmienna $r";
}
karolo_k
20.10.2010
<?php $q = "SELECT * FROM users WHERE email='$useremail' AND password = '$userpassowrd'"; //zapytanie sqlowskie do pamieci $r = @mysqli_query($polaczZBaza, $q); //przesył polecenia sql na serw mysql @ jest opcjonlana, jak masz malpe to ci nie podaje komunikatow o bledach w przegladarce... a argumenty podajesz polaczenie z baza dlatego teraz ci podam jak inaczej sie polaczyc DEFINE('USER', 'login'); //definiujesz swoje dane DEFINE('HASLO', 'haslo123'); DEFINE('HOST', 'localhost'); DEFINE('NAZWA', 'dbname'); $polaczZBaza = @mysqli_connect(HOST, USER, HASLO, NAZWA) OR die ('brak polaczenia z mysql blablabal error: ' . mysqli_connect_error()); //i teraz masz $polaczZBaza dawac w argumencie funkcji wyzej opisanej mysqli_query //teraz trzeba jakos te dane zrzutowac na ekran wiec mozesz taka technika if($r){ // tu mowisz do serwera "wykonaj to co masz pod $r a nastepnie jesli nie miales problemow to wykonaj instrukcje zawarte w klamerkach while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { //tutaj jest stworzona zmienna wielowymiarowa (tablica) wielowymiarowa dlatego ze bedzie rzutowana po kolei a wiec //masz wyciagniete wszystkie rekordy naraz oczywiscie jesli w poleceniu $q nie podales ze chcesz 1 i teraz robimy rzutowanie w taki sposob ze.... echo $row['name']; //to masz wypisane wszystkie wartosci z tablicy po kolei ale tylko te co nazwales jako nazwa a zeby takie miec (pod nazwą "nazwa" to trzeba //query zrobic tak } } //koniec if $r else { echo "zle wykonane polecenie pod zmienna $r"; } ?>Rezultat
zle wykonane polecenie pod zmienna
-PainKiller- 20.10.2010
skoro tak to albo zle sie polaczyles albo zle skonstruowane jest zapytanie sql