Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem - odpowiednik sqlite_num_rows() dla sqlite3
Forum PHP.pl > Forum > PHP
inż
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?
nospor
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
inż
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".
nospor
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
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.