Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Zapytanie SQL


  • Zamknięty Temat jest zamknięty
17 odpowiedzi w tym temacie

#1 karolo_k

    Wszechpomocny

  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 25.12.2010 18:12

Witam, mam taki problem ze swoim zadaniem. Chce przeszukać tabele w poszukiwaniu czegoś tak i w zależności od tego czy to coś dostanie znalezione bądź nie to żeby mnie przeniosło do odpowiedniej strony.
No więc zatrzymałem się na samym zapytaniu:
"SELECT 'email' FROM tabela WHERE 'email'='[email protected]'"
Chodzi mi o to żeby pobrac email i potem w bazie sprawdzić czy taki ebail juz jest w niej. Jeżeli jest to idz do a.php a jezeli nie ma to idz do b.php
Ktoś może sprawdzić czy to zapytanie jest dobrze i powiedzieć co mam pisać dalej?
  • +
  • -
  • 0

#2 -PainKiller-

    Wszechobecny

  • Zbanowany

Reputacja: 66
Pomocny

  • Postów:498
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Kraków
Offline

Napisano 25.12.2010 18:20

testowanie czy zapytanie jest błędne robi się samodzielnie, wchodzisz w PhpMyAdmin, i wklejasz to do zakładki SQL, tam jest debugger więc już masz odpowiedź

#3 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 25.12.2010 22:12

Mam tam podać tylko:
"SELECT 'email' FROM tabela WHERE 'email'='[email protected]'"
czy calosc pliku z wyborem bazy itp?

No a jak juz sprawdze czy jest ten email to w jakis sposob mam to zapisac?
  • +
  • -
  • 0

#4 -PainKiller-

    Wszechobecny

  • Zbanowany

Reputacja: 66
Pomocny

  • Postów:498
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Kraków
Offline

Napisano 25.12.2010 22:24

Chodzi mi o to żeby pobrac email i potem w bazie sprawdzić czy taki ebail juz jest w niej.

Język SQL nie jest językiem programowania tylko wydawania poleceń, w bazie nie sprawdzisz (poleceniem) czy taki email już istnieje, możesz to jedynie wywnioskować na podstawie ilości zwróconych rekordów. Jak chcesz to sprawdzić i postawić warunki instrukcji (tak jak piszesz) to musisz to zrobić z poziomu aplikacji.

Odsyłam cie do manuala PHP
funkcja mysqli_num_rows

Mam tam podać tylko:

"SELECT 'email' FROM tabela WHERE 'email'='[email protected]'"


czy calosc pliku z wyborem bazy itp?

No a jak juz sprawdze czy jest ten email to w jakis sposob mam to zapisac?

a tego to już w ogole nie rozumiem

#5 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 25.12.2010 22:59

Skorzystałem z takiego gotowca:
<?php
$link = mysql_connect("ip","nick","haslo" );
mysql_select_db("karolo_123");

$result = mysql_query("SELECT * FROM tabela WHERE 'email'='[email protected]'"); 
$num_rows = mysql_num_rows($result); 

echo $num_rows "wierszy\n";
?>
I mam taki bład:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line 8
No i odnośnie czego by to mogło być? 8 linijka to ta echo $num_rows "wierszy\n";

Użytkownik karolo_k edytował ten post 25.12.2010 23:02

  • +
  • -
  • 0

#6 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1 742
Godlike

  • Postów:6 881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 26.12.2010 01:17

Nie:
echo $num_rows "wierszy\n";
tylko:
echo $num_rows . "wierszy\n";
lub:
echo "$num_rows wierszy\n";
PHP: Strings - Manual
  • +
  • -
  • 0

#7 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 26.12.2010 11:49

Można to też rozwiązać tak:


$result = mysql_result(mysql_query("SELECT count(*) FROM `users` WHERE `email`='asd';"),0);
echo $result."wierszy\n";
if ($result){
//email jest
} else {
//emaila nie ma
}

  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#8 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 26.12.2010 15:55

W tym przypadku co Portek podał to mam zład na lini z zapytaniem
Warning: mysql_result() expects parameter 1 to be resource, boolean given in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line 
wierszy emaila nie ma

A w przypadku tego co podał Pavulon to z kropka czy bez mam taki blad
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in H:\Host4game\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line 6
. wierszy ' tylko teraz 6 linia to "$num_rows = mysql_num_rows($result); "
  • +
  • -
  • 0

#9 -PainKiller-

    Wszechobecny

  • Zbanowany

Reputacja: 66
Pomocny

  • Postów:498
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Kraków
Offline

Napisano 26.12.2010 17:22

Porka kod w ogóle ci tego nie rozwiąże, on nie sprawdza czy email jest w bazie tylko czy zapytanie zwróciło prawdę, zapytanie zwraca prawdę nie wtedy gdy ma rekord tylko wtedy gdy jest poprawnie sformułowane, więc w przypadku bez rekordu z emailem otrzymasz ten błąd

Warning: mysql_result() expects parameter 1 to be resource, boolean given in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line
wierszy emaila nie ma

mysql_result potrzebuje argument, nie typ bool
napisałem ci wykorzystaj funkcje która zliczy ilośc zwróconych rekordów

mysqli_num_rows

Dodano 26 grudzień 2010 - 17:24:
Co do stringów stosuje dwa sposoby, jak nie wiem to sobie rozbijam na dwie instrukcje echo :]
albo wg wzoru

echo 'tekst '.$zmienna.' tekst dalej dsadsad asd sad sa sa '.$zmienna.' ';

Dodano 26 grudzień 2010 - 17:26:
w php masz dwa interfejsy BD

używaj tego nowszego, rozwiniętego MySQLi

#10 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 26.12.2010 21:24

Zobacz do 5 postu w tym temacie.
$num_rows = mysql_num_rows($result);
Rozumiem że funkcja mysql_num_row zmiennej num_rows przypisze liczbe wierszy. To nie wiem dlaczego potem jest problem z wyświetleniem. Jednak nie mam pojęcia co oznacza ten bład
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line 8

  • +
  • -
  • 0

#11 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 26.12.2010 21:35

Porka kod w ogóle ci tego nie rozwiąże, on nie sprawdza czy email jest w bazie tylko czy zapytanie zwróciło prawdę, zapytanie zwraca prawdę nie wtedy gdy ma rekord tylko wtedy gdy jest poprawnie sformułowane, więc w przypadku bez rekordu z emailem otrzymasz ten błąd

Warning: mysql_result() expects parameter 1 to be resource, boolean given in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line
wierszy emaila nie ma

Ekhem, jak to nie sprawdzi czy email jest w bazie? Zapytanie zliczy ilość adresów email w bazie - zakładałem że nie będzie ich więcej niż 1. Jeśli email w bazie jest zwraca wartość "1" (uznajmy że to TRUE), lub jeśli emaila nie ma wartość "0" (false), takie było główne założenie z pierwszego posta, więc? Nie może zwrócić błędu, dlaczego? Bo musi zwracać ilość adresów email w bazie - "0" też jest wartością którą zwróci :-)

Zobacz do 5 postu w tym temacie.

$num_rows = mysql_num_rows($result);
Rozumiem że funkcja mysql_num_row zmiennej num_rows przypisze liczbe wierszy. To nie wiem dlaczego potem jest problem z wyświetleniem. Jednak nie mam pojęcia co oznacza ten bład
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line 8

O ile to ta linijka:

echo $num_rows "wierszy\n";

To zamień to na:

echo $num_rows."wierszy\n";


  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#12 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 26.12.2010 23:46

No to teraz wprowadziłem zmiany na 8 tak jak mowil portek i rezultat:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line 6
wierszy

A 6 linijka to ta
$num_rows = mysql_num_rows($result); 

  • +
  • -
  • 0

#13 -PainKiller-

    Wszechobecny

  • Zbanowany

Reputacja: 66
Pomocny

  • Postów:498
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Kraków
Offline

Napisano 27.12.2010 00:17

"SELECT email FROM tabela WHERE email='[email protected]'"

Dodano 27 grudzień 2010 - 00:32:
warunki, i wyciagane kolumny nie wstawia sie w stringi

#14 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 27.12.2010 13:28

No to poprawiłem zapytanie.

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in H:\ame\reszta\xampp-win32-1.7.2\xampp\htdocs\num.php on line 6
wierszy

  • +
  • -
  • 0

#15 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3 007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 27.12.2010 13:45

Pokaż całą zwracaną tablicę z zapytania:
print_r($result);

A jeszcze lepiej cały obecny skrypt.
  • +
  • -
  • 0

serwer-1.png
IP: ts3.cserwerek.pl


#16 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 27.12.2010 13:47

Pain geniuszu :D
"SELECT * FROM tabela WHERE email='[email protected]'"

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#17 -PainKiller-

    Wszechobecny

  • Zbanowany

Reputacja: 66
Pomocny

  • Postów:498
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Kraków
Offline

Napisano 27.12.2010 14:48

co za różnica jak on chce tylko przetestować czy jest email :] ?

#18 karolo_k

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:328
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 28.12.2010 20:45

Tu macie skrypt:
<?php
$link = mysql_connect("ip","nick","haslo" );
mysql_select_db("tabela");

$result = mysql_query("SELECT * FROM tabela WHERE email='[email protected]'"); 
$num_rows = mysql_num_rows($result); 

echo $num_rows."wierszy\n";

?>

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych