Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] Nie mogę wysłać jako argument funkcji zapytania SQL, dlaczego?
Forum PHP.pl > Forum > Przedszkole
lamcpp
witam, stworzyłem taką funkcję do nawigacji na stronie(tworzącą linki Następny i poprzedni) i wyswietlający aktualne zdjęcie:
  1. function nawigacja($prev,$next)
  2. {
  3. echo "<a href='index.php?id={$_GET['id']}&wysw=yes'><img src='".$images_dir."/".$_GET['plik']."' border='0' alt='".$res[1]."' /></a>";
  4. $rezultat = mysqli_query($dbc,$next);
  5. $rezultat2 = mysqli_query($dbc,$prev);
  6. while($spr = mysqli_fetch_array($rezultat))
  7. {
  8. echo "<a href='index.php?wysw=yes&glob=1&plik={$spr['plik']}&nazwa={$spr['nazwa']}&id=".$spr['id']."'>Następne</a>";
  9. }
  10. while($spr = mysqli_fetch_array($rezultat2))
  11. {
  12. echo "<a href='index.php?wysw=yes&glob=1&plik={$spr['plik']}&nazwa={$spr['nazwa']}&id=".$spr['id']."'>Poprzednie</a>";
  13. }
  14. }


wywołuję ją tak:
  1. $prev = "SELECT zdjecie.id,nazwa,plik FROM zdjecie WHERE zdjecie.id <{$_GET['id']} ORDER BY id DESC LIMIT 1";
  2. $next = "SELECT zdjecie.id,nazwa,plik FROM zdjecie WHERE zdjecie.id >{$_GET['id']} ORDER BY id ASC LIMIT 1";
  3. nawigacja($prev,$next);


ale niestety funkcja nie działa, tzn nie działają argumenty przesyłane do funkcji, czyli zapytania SQL. Czy nie można wysyłać zapytan jako argumenty funkcji? jesli nie to jak to obejsc?
Takie komunikaty wyskakują:
Cytat
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in D:\usr\galeria\funkcje.php on line 22

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in D:\usr\galeria\funkcje.php on line 23

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in D:\usr\galeria\funkcje.php on line 24

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in D:\usr\galeria\funkcje.php on line 28


Czyli tak jakby te argumenty do funkcji wogole się nie przesyłały. Ale dlaczego tak się dzieje? wsyzstko jest na 100% dobrze napisane, ponieważ sprawdzałem ten sam kod ale bez funkcji i działa. I na pewno problem ma związek z treśćią zapytan przesyłanych do funkcji, sprawdzałem umieszczając te zapytania poza funkcją i wszystko jest wporządku. No ale one muszą być w funkcji.

Prosiłbym o pomoc. Myślałem, że może te argumetny nie mają cudzysłowiów albo coś, no ale przecież umieszczone są jako łancuch znaków...
nospor
Przeciez komunikat wyraźnie mowi jaki to argument:
Cytat
mysqli_query() expects parameter 1 to be mysqli, null given

ktory to pierwszy argument? No u Ciebie $dbc. Czyli $dbc jest null. A dlaczego? Bo nie przeczyales o zasięgu zmiennych:
http://pl2.php.net/manual/pl/language.variables.scope.php
lamcpp
no wystarczyło dodać:
  1. global $dbc; global $images_dir;

Ale powiem szczerze, byłem przyzwyczajony do zmiennych globalnych własnie z C++, że nie trzeba ich dodatkowo wywoływać wewnątrz zmiennej lokalnej, dla mnie to trochę niedorzeczne.

Niemniej jednak trzeba się przyzwyczaić:) Dzięki nospor za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.