Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie działa w phpmyadmin, w PHP już nie
blady101
post 13.03.2012, 14:37:08
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


Witam, wykonuję sobie proste zapytanie:
CODE
SET @rownum := 0;
SELECT * FROM (SELECT @rownum := @rownum+1 AS rank, id, score FROM profiles ORDER BY score DESC) AS derived_table

Które daje prawidłowe wyniki w PhpMyAdmin. Ale już w PHP przy użyciu mysql_query daje oto taki efekt:
CODE
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM (SELECT @rownum := @rownum+1 AS rank, id, score FROM profiles ORDE' at line 1

Jak widać mysql_query urżnął zapytanie. O.o
Skąd takie cuda?

Ten post edytował blady101 13.03.2012, 14:37:55
Go to the top of the page
+Quote Post
skowron-line
post 13.03.2012, 14:40:46
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


mysql_query pozwala na wykonanie tylko jednego zapytania także
  1. mysql_query('SET @rownum := 0;');
  2. mysql_query('SELECT * FROM (SELECT @rownum := @rownum+1 AS rank, id, score FROM profiles ORDER BY score DESC) AS derived_table');


Ten post edytował skowron-line 13.03.2012, 14:40:55


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
blady101
post 13.03.2012, 14:55:37
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


Świetnie działa. Dzięki. Jeszcze jedno pytanie, w tej sekcji zapytania która jest w nawiasach:

(SELECT @rownum := @rownum+1 AS rank, id, score FROM profiles ORDER BY score DESC)

Da się zrobić, aby wykonywało to do momentu aż napotka rekord id=5? coś jak IF id=5 THEN STOP; Ale chodzi o zatrzymanie tylko tego co w nawiasie.

Ten post edytował blady101 13.03.2012, 14:57:28
Go to the top of the page
+Quote Post
skowron-line
post 13.03.2012, 15:15:05
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


http://dev.mysql.com/doc/refman/5.0/en/con...-functions.html


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
blady101
post 13.03.2012, 15:30:13
Post #5





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


Okej, instrukcja warunkowa jest. Ale teraz aby zatrzymać wykonywanie nawiasu w momencie napotkania rekordu z id=5, potrzebujemy dostęp do każdego kroku wykonywania gdzie sprawdzalibyśmy obecnie pobierany rekord IF (id=5, Zatrzymaj wykonywanie nawiasu).

Możliwy jest dostęp do każdego kroku zapytania?

Ten post edytował blady101 13.03.2012, 15:30:27
Go to the top of the page
+Quote Post
skowron-line
post 13.03.2012, 15:44:37
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


A nie możesz w podzapytaniu użyć where id <> 7 albo where id not in (7, 9, 12) czy jakie tam liczby chcesz ominąć


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
blady101
post 13.03.2012, 17:31:19
Post #7





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 26.12.2011

Ostrzeżenie: (0%)
-----


Tu nie chodzi właśnie o ominięcie. Te zapytanie sprawdza miejsce rekordu(id=5) w posortowanej tabeli, i jak już napotka ten rekord, ma już jego miejsce, więc nie musi dalej mielić.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 09:48