Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem - odpowiednik sqlite_num_rows() dla sqlite3
inż
post 12.12.2013, 11:22:46
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.11.2013
Skąd: Bydgoszcz

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


Chcę policzyć wiersze w bazie sqlite3.
W sqlite 2 było po prostu sqlite_num_rows(). Nie widzę odpowiednika funckji dla sqlite3.

tablica wygląda tak:
  1. $db = new SQLite3("database.db");
  2. $db->query("CREATE TABLE tablica (id INTEGER PRIMARY KEY, pole1 VARCHAR(100), pole2 VARCHAR(100)) ");
  3. $db->query("INSERT INTO tablica VALUES(1,'tekst1','tekst2') ");
  4. $db->query("INSERT INTO tablica VALUES(2,'A','B') ");
  5. $db->query("INSERT INTO tablica VALUES(3,'C','D') ");


Gdzieś znalazłem, że można to zrobić w następujący sposób:
  1. $q = $db->query('SELECT * FROM tablica');
  2. //$row_c = sqlite_num_rows($q);
  3. $ilosc = $q->fetchArray();
  4. $row_c = count($ilosc);



Problem w tym, że zmienna @row_c ma po tych operacjach wartość 6 a nie 3?

Ten post edytował inż 12.12.2013, 11:24:55
Go to the top of the page
+Quote Post
nospor
post 12.12.2013, 11:27:26
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




fetchArray pobiera jeden rekord a nie wszystkie. I rekord ten jest tablicą z numerycznymi i nazwanymi indeksami pol, stad u ciebie wynik 6, bo 3 kolumny numeryczne i 3 kolumny nazwane.

Chcac przeleciec po wszystkich rekordach masz uzyc WHILE. Wszystko to masz czarno na bialym w manualu.... No ale po co zagladac....
http://li1.php.net/manual/en/sqlite3result.fetcharray.php


Zas do liczenia ile wierszy ma tablica to sluzy odpowiednie zapytanie z COUNT(*)
select count(*) from tablica
ktore zwraca jedna informacje i jest nią liczba wierszy w tabeli
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
inż
post 12.12.2013, 11:57:44
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 27.11.2013
Skąd: Bydgoszcz

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


Dzięki nospor za szybką odpowiedź!

Wiem, że czasem się wydaje, że komuś się nie chciało szukać, czy czytać.
Ale uwierz, że początkujący gubi się łatwo w gąszczu informacji. Szukałem nie tam gdzie trzeba i wynalazłem nie to co trzeba, po prostu.
Jeszcze raz dzięki!;)

--edit--
zrobiłem tak:
  1. $qdb = $db->query('SELECT count(*) FROM tablica');
  2. echo "<br>Znaleziono $qdb rekordów.";


Już pewnie wszyscy się ze mnie śmieją, ale ja nie wiem jak to zrobić, żeby wyświetlić wartość $qdb.
Bo to echo zwraca błąd: "Catchable fatal error: Object of class SQLite3Result could not be converted to string in".

Ten post edytował inż 12.12.2013, 13:28:17
Go to the top of the page
+Quote Post
nospor
post 13.12.2013, 11:38:28
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Kazdy wynik SELECT odbiera sie przy pomocy fetchArray, nawet jesli to tylko jeden rekord z jednym polem.

I nie edytuj posta jak masz cos nowego do dodania, bo tego nie widac. Pisz poprostu nowego posta w temacie, a wowczas bedzie widac, ze jest jakas zmiana


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 11:12