Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie wyniku zapytania
Forum PHP.pl > Forum > Bazy danych
chaos_code
Problem być może banalny, ale zbił mnie z tropu.

Zrobiłem sobie zapytanie:

  1. <?php
  2. $sql ="select distinct c.c_name from category c, art_cat ac where c.c_id 
  3. in (select ac_category from art_cat where ac_art = $id) group by c.c_name;)";
  4. $res = mysql_query($sql);
  5. ?>

i teraz przy:
  1. <?php
  2. ?>


pojawia się błąd:
"mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\usr\xampp\htdocs\log\art.php on line 34
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 ';)' at line 1"

samo zapytanie testowane pod phpMyAdmin działa i zwraca to co ma;

podobnie mysql_fetch_row($res); działa dla zapytań typu $sql ="select * from category where 1';

Z góry dziękuję za pomoc. smile.gif
sticker
błąd zapytania sql
i jeżeli działa pod phpmyadminem to ściemniasz smile.gif wywal może średnik pod koniec zapytania który ci sie wkradł i powinno być ok
chaos_code
Pytanie odwołąne - głupi ja cool.gif

średnik wywalony, thx
ale nadal to samo (bo jeszcze nawias zamykający niepotrzebny się zakradł biggrin.gif)

pod phpMyAdmin oczywiście w takiej formie

  1. SELECT DISTINCT c.c_name FROM category c, art_cat ac WHERE c.c_id IN (SELECT ac_category FROM art_cat WHERE ac_art = 60) GROUP BY c.c_name


czyli zamiast $id, daje 60, niemniej działa, a pod php nawet jeśli też wstawię 60, to dalej błąd (a tu już bez nawiasu kopiowałem winksmiley.jpg)

może dorzucę tablice (jedną odchudziłem, bo była powiązana jeszcze z inną):

  1. CREATE TABLE category
  2. (
  3. c_id int NOT NULL AUTO_INCREMENT,
  4. c_position int NOT NULL,
  5. c_name varchar(30) NOT NULL,
  6. c_descripion varchar(500),
  7. PRIMARY KEY (c_id)
  8. )
  9.  
  10. CREATE TABLE art_cat
  11. (
  12. ac_id int NOT NULL AUTO_INCREMENT,
  13. ac_category int NOT NULL,
  14. ac_art int NOT NULL,
  15. PRIMARY KEY (ac_id),
  16. FOREIGN KEY (ac_category) REFERENCES category(c_id),
  17. FOREIGN KEY (ac_art) REFERENCES art(a_id)
  18. )
  19.  
  20. CREATE TABLE art
  21. (
  22. a_id int NOT NULL AUTO_INCREMENT,
  23. a_title varchar(400) NOT NULL,
  24. a_conntent varchar(10000),
  25. a_data timestamp,
  26. PRIMARY KEY (a_id),
  27. )



I może dokładniej z kodem:

  1. <?php
  2. public function showById($id)
  3. {
  4. $sql ="select distinct c.c_name from category c, art_cat ac where c.c_id in (select ac_category from art_cat where ac_art = 60) group by c.c_name)";
  5. $res = mysql_query($sql);
  6. return $res;
  7. }
  8. ?>


i wywołane przez:

  1. <?php
  2. public function Rows($res)
  3. {
  4.  
  5. for ($row = 0; $row < mysql_num_rows($res); $row++)
  6. $value[$row] = mysql_fetch_row($res);
  7. $ret['rows'] = mysql_num_rows($res); //ile wiersze +++opty wrzucić do for-a? jednak może nie
  8. $ret['cols'] = count($value[0]); // ile kolumn
  9. $ret['value'] = $value; // wartości [wiersze][kolumny]
  10. return $ret; //[rows/cols/value][ile|wiersze][kolumny]
  11. }
  12. ?>


choć jeśli wywołam bezpośrednio to taki sam efekt, wywołanie

  1. <?php
  2. $res2 = $objAC->showById($id);
  3. //$row2 = mysql_fetch_row($res2);
  4. $rows2 = $objAC->Rows($res2);
  5. ?>


Może to jakiś szewski błąd, ale nieco mnie stresuje. sad.gif

Edit:
bo już wiem biggrin.gif
Ide sobie na powietrze, bo chyba za długo już przy kompie siedzę. winksmiley.jpg
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.