[PHP/MySql] Zbudowanie prostego zapytania z AND

0

Witam. Wiem, że pytanie jest dość prostackie, ale jednak mam już dość poszukiwań.
Pisze sobie mały skrypcik, który ma sprawdzić czy login z hasłem się zgadzają.

$query =  ("SELECT * FROM $table WHERE Login LIKE '$login' AND Pwd LIKE 'md5($haslo)'");

Jeśli chodzi o zmienne ręcze głową, że działają. No i czas na mój problem: Dlaczego kiedy to już wrzuce na serwer nie chce działać?. W prawdzie działa, ale to działa na zasadzie, że sie spełni tylko jedno np sam login jest prawidłowy ale hasło już nie koniecznie musi być, lub odwrotnie, że loginu nie musi być, ale hasło jak będzie sie zgadzać to warunek zostanie spełniony.
Gdzie popełniłem błąd ?

0
$query = "SELECT * FROM $table WHERE Login = '$login' AND Pwd = 'md5($haslo)'";
0

Hmm... Spróbuj może tak:

$query = 'SELECT * FROM `'.$table.'` WHERE `Login`="'.$login.'" AND `Pwd`="'.md5($haslo).'"';

//Added: Ech, Coldpeer był szybszy. Ach, to przeglądanie neta w tabach ;P

0

i jeszcze tak na wpół offtopic. Ta gwiazdka między Select a From to jest odnośnie do tabeli ? Bo sądze ze * oznacza wszystko co istnieje, ale wszystkie bazy jakie istnieja czy wszystkie tabele O_o

EDIT

wasze gotowce nie chca wspolpracowac, wiec moze to pomoze nam w naszej wspolpracy, wklejam wam skrypt

<script language="php">
#na formularzu textboxy nazywaja sie T1 oraz T2
$login=$T1;
$haslo=$T2;
#przypisywanie zmiennych
$hostname =  "lo53r.hopto.org";
$username =  "root";
$password =  "krasnal";
$dbName =  "filmy";
$table = "user";
#LACZENIE Z BAZA
MYSQL_CONNECT($hostname, $username, $password) ;
mysql_select_db("$dbName") ;
#ZAPYTANIE
$query = "SELECT * FROM $table WHERE Login = '$login' AND Pwd = 'md5($haslo)'";
$wykonaj=mysql_query($query);
if ($wykonaj)
{
	echo($login);
	echo(" ");
	echo($haslo);
	print("<br>");
	print("<br>");
	print("<br>");
	print("<br>");
	print("<br>");
	echo("DOBRZE");
}
else
{
    echo($login);
	echo($haslo);
}
</script>
0
lo53r napisał(a)

i jeszcze tak na wpół offtopic. Ta gwiazdka między Select a From to jest odnośnie do tabeli ? Bo sądze ze * oznacza wszystko co istnieje, ale wszystkie bazy jakie istnieja czy wszystkie tabele O_o

SELECT - wybierz

    • wszystkie kolumny tabeli
      FROM - z
      tabela - nazwa tabeli

Nazwe bazy danych wybierasz wczesniej za pomoca mysql_select_db

0

Tak, jak napisał GEGE,
SELECT * FROM table pobiera wszystkie kolumny
SELECT pole1, pole2, pole3 - pobiera tylko te trzy pola

Dodam, że * nie jest w niektórych przypadkach zbyt optymalnym rozwiązaniem i jeśli masz tam kolumn 10, a korzystasz z zapytania używając w kodzie tylko dwóch, to opłaca się pobrać tylko te dwa pola.

0

Ciesze się, że uświadomiliście mnie co oznacza miejsce gwiazdki, ale powracając do tematu. Czemu mi nie działa zapytanie O_o ?

0

Hmm... Funkcja md5 powinna wyjść przed apostrofy:

$query = "SELECT * FROM $table WHERE Login = '$login' AND Pwd = md5('$haslo')";

Druga sprawa to to, że nie wiadomo co to za zmienne $login i $haslo:

if ($wykonaj)
{
        $row = mysql_fetch_array($wykonaj);
        echo $row['login'];
        echo(" ");
        echo $row['haslo'];
        print("<br>");
        print("<br>");
        print("<br>");
        print("<br>");
        print("<br>");
        echo("DOBRZE");
}

Ale i tak kod dość topornie napisany...

0

niestety takze nie dziala :/ zaczyna mnie to irytowac ;/

edit:
Po nocy ochlonalem i doszedlem do wniosku ze ten warunek jest bezsensu. Warunek zawsze przyjmie wartosc true bo zapytanie zawsze prawidlowo sie wykona, a mi by chodzilo by o to aby po wpisaniu loginu i hasla pojawila sie inna strona czyli pierwsza czesc warunku. Mcie jakis pomysl ?
Poza tym ten kod jest tylko jak na razie wstepny. Jeeli chodzi ze nie wiadomo skad sie wzielo login i haslo te zmienne to juz pisze. Mam formularz gdzie sa 2 textboxy nazwane T1 oraz T2 a z tego co wiem przy przesylaniu danych wystarczy powolac sie na nazwe danego obiektu. Prawda ?

0

Możliwe, że masz register_global na off:

$login = $_POST[?T1?];
$haslo = $_POST[?T2?];
0

mozliwe ale watpie w to ze wzgledu na fakt iz:

<script language="php">
$login=$T1;
echo($login);
</script>

wszystko sie wyswietla jak trzeba</php>

0

Skoro mówisz, że zapytanie i inne są ok, to może spróbuj zamienić:

if ($wykonaj)

Na:

if (mysql_num_rows($wykonaj) > 0)

?

0

wreszcie zalapalo :D czyli burza mózgów pozwoliła nam dojść do tego do czega chciałem. Dziękuje. Teraz logowanie działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1