Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie sql w funkcji
Forum PHP.pl > Forum > Przedszkole
ColdFire
Mam taką funkcję:
  1. <?php
  2.  
  3. function settings($var)
  4. {
  5. $query = "SELECT * FROM `". $db_prefix ."_settings` WHERE var='".$var."'";
  6. $result = mysql_query($query);
  7. while ($row = mysql_fetch_assoc($result))
  8. {
  9. return $row[value];
  10. }
  11. }
  12.  
  13. ?>

którą wywołuję w indexie tak: settings('sitetheme');
co powoduje wyświetlenie błędu
Cytat
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in ...  on line 100

struktura tabeli:
Kod
id  var  value
(..)          (...)        (...)
3            sitetheme nowy

co robię źle? bo wygląda mi na to, że w funkcjach nie da się wykonywać zapytań, w co średnio chce mi się wierzyć....
kszychu
Funkcje mają to do siebie, że są niezmiernie głupie. I taka głupia jak trampek funkcja pojęcia bladego nie ma co kryje się pod fascynującą i groźnie brzmiącą nazwą $db_prefix.
Polecam poczytać sobie o zasięgu zmiennych, to powinno rozjaśnić niektóre zawiłości obcowania z rozwiniętymi inaczej funkcjami.

Acha, przenoszę na przedszkole.
LBO
  1. <?php
  2.  
  3. function settings($var)
  4. {
  5. //teraz wartosc $db_prefix
  6. //jest widoczna dla ciała funckji
  7. //ale kolega wyżej ma rację
  8. //poczytaj o zasiegu fukcji (variables scope)
  9. global $db_prefix;
  10.  
  11. $query = "SELECT * FROM `". $db_prefix ."_settings` WHERE var='".$var."'";
  12. $result = mysql_query($query);
  13. while ($row = mysql_fetch_assoc($result))
  14. {
  15. return $row[value];
  16. }
  17. }
  18.  
  19. ?>
kszychu
Człowiek stara się, męczy, by innych czegoś nauczyć. Stara się wyrobić u innych nawyk zaglądania do manuala. A tu trafia się taki nadgorliwiec, który raz, że nie napisze nic nowego w wątku, a tylko zmieni wypowiedź wyżej, dwa - sprawi, że człowiek nie musi już zaglądać do manuala.
Nie pozostaje mi nic innego, niż tylko nagrodzić takiego usłużnego.
@LBO: masz warna.

P.S. Ta funkcja nadal nie ma prawa działać, bo nie tylko o tej zmiennej tutaj zapomniano. Ale tego już LBO nie zauważył, bo nie było tego w moim poście! POdpowiedź dla ColdFire: gdzie masz uchwyt do połączenia z bazą?
LBO
Cytat
gdzie masz uchwyt do połączenia z bazą?


mysql_query" title="Zobacz w manualu php" target="_manual:
Cytat
Jeżeli identyfikator_połączenia nie został podany, wykorzystywane jest ostatnio otwarte połączenie


~krzychu, wydaje mi się, że warny nie są po to, żeby "karać" "nadgorliwych" uzytkowników, wiesz? powiedz mi, który punkt regulaminu złamałem?

Cytat
Ale tego już LBO nie zauważył, bo nie było tego w moim poście
na to nic nie napisze.. :/
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.