2011-08-17 5 views
6

W moim pliku PHP, używam tej linii do ściągania danych z mojej bazy danych MySQL:

$query = "SET @rank=0; SELECT @rank:[email protected] +1 as rank, Blah Blah..."; 

Gdybym sprawdzić SELECT w oknie phpMyAdmina SQL (bez $ query =) działa prawidłowo.

Ale jeśli użyję go w PHP, otrzymam błąd. Nie podoba mu się "SET @ rank = 0;" kawałek. Czy istnieje sposób użycia "SET @ rank = 0;" kiedy jest w "$ query ="? Czy jest w pobliżu praca?

Reszta kodu jest standardowe rzeczy do wyciągania danych z db:

public function getmyData() { 


$mysql = mysql_connect(connection stuff); 

$query = "SELECT @rank:[email protected] +1 as rank, formatted_school_name, blah blah"; 

$result = mysql_query($query); 

      $ret = array(); 
       while ($row = mysql_fetch_object($result)) { 
        $tmp = new VOmyData1(); 
        $tmp->stuff1 = $row-> stuff1; 
        $tmp->stuff2 = $row->stuff2; 

        $ret[] = $tmp; 
         } 
       mysql_free_result($result); 

       return $ret; 

    } 

Aktualizacja: Próbuję użyć sugestię Amerb z użytkownikiem za pomocą multi-zapytania. I łączone kwerendy tak:

$query = "SET @rank = 0"; 

$query .= "SELECT @rank:[email protected] +1 as rank... 

Zmieniłem wynik:

$result = $mysqli_multi_query($query); 

Ale to w przypadku braku jakiegoś powodu. Jestem na komputerze z PHP 5.2. Jakieś sugestie?

+1

Jakiego kodu używasz do uruchomienia "zapytania"? To właściwie dwa zapytania (zwróć uwagę na średnik przed 'SELECT') i przynajmniej niektóre z powiązań PHP MySQL nie oczekują wielu zapytań w tym samym wywołaniu. – Amber

+0

@Amber, Cześć Amber dzięki za wiadomość. Dodałem trochę więcej kodu. Jest to zwykły kod do wyciągania danych z bazy danych. Widzę twój punkt dotyczący ";". Czy istnieje sposób na obejście tego problemu? Dziękuję Ci. – Laxmidi

+0

http://php.net/manual/en/mysqli.multi-query.php – Amber

Odpowiedz

6

This guy here wydaje się mieć sposób ustawienia zmiennej w tym samym zapytaniu na zero. Nie mam jednak ustawionego MySQL na tym komputerze, aby go wypróbować.

Oto zapytanie sugeruje w swoim blogu:

select @rownum:[email protected]+1 ‘rank’, p.* from player p, (SELECT @rownum:=0) r order by score desc limit 10; 

(Czy istnieje pewne zadanie domowe pochodzące z powodu gdzieś mających do czynienia z komputerowymi szeregach Jest to trzecie pytanie widziałem na ten temat w dwóch dni.)

Czy sprawdzasz duplikaty wyników?

+0

Witam @Marvo, dziękuję za link. To rozwiązało mój problem. Oceniam wyniki ... Żałuję, że nadal nie jestem młodym, pracowitym studentem - to były czasy :). Dzięki za pomoc. – Laxmidi

2

Musisz włączyć korzystanie z wielu zapytań w jednym, ale zapomniałem, jak to zrobić w tej chwili. To jest funkcja bezpieczeństwa.

1

Spróbuj wykonać to jako 2 osobne kolejne zapytania.