Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zapytanie sql w funkcji
ColdFire
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 24.10.2004

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


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ć....

Ten post edytował ColdFire 14.04.2006, 13:18:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


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.
Go to the top of the page
+Quote Post
LBO
post
Post #3





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


  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. ?>
Go to the top of the page
+Quote Post
kszychu
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


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ą?
Go to the top of the page
+Quote Post
LBO
post
Post #5





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


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.. :/
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 07:40