←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Połączenie z baza dancyh

Zablokowany

  • +
  • -
karolo_k - zdjęcie karolo_k 19.10.2010

Witam ja mam problem z połączeniem z baza danych. Używam prostego skryptu do przetestowania połączenia. Skrypt:
<?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
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 19.10.2010


<?php

if(!mysql_connect('94.23.92.159','login','haslo')){

echo "niepolaczono";

} else {

 echo "polaczono";

}

?>
Odpowiedz

  • +
  • -
karolo_k - zdjęcie 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 23
A linia 23 to
$row = mysql_fetch_assoc($result);
Niemam pojęcia co jest źle bo dopiero raczuje w tym :confused:
Odpowiedz

  • +
  • -
Portek - zdjęcie 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


<?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...
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 19.10.2010

Automatyczna wiadomość


Ten temat został przeniesiony z forum:
Inne -> OFF Topic
do
Inne -> WWW -> Problemy
Odpowiedz

-PainKiller- - zdjęcie -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;


$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";
}

Odpowiedz

  • +
  • -
karolo_k - zdjęcie 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
Odpowiedz

-PainKiller- - zdjęcie -PainKiller- 20.10.2010

skoro tak to albo zle sie polaczyles albo zle skonstruowane jest zapytanie sql
Odpowiedz

  • +
  • -
Portek - zdjęcie Portek 20.10.2010

Albo błędne wykorzystanie mysqli? PHP: mysqli::query - Manual
Odpowiedz
Zablokowany