2010-04-06 11 views

Odpowiedz

9

Z documentation:

SQLite3 public bool :: exec (string $ zapytanie)

Wykonuje wynik mniej zapytanie przeciwko danej bazy danych.

Ta metoda zwraca zestaw boolowski, a nie wynikowy. Po konwersji true na liczbę całkowitą stanie się 1.

Powinieneś użyć SQLite3::query(). Przykład (przetestowane)

$rows = $result->query("SELECT COUNT(*) as count FROM USERIDS"); 
$row = $rows->fetchArray(); 
$numRows = $row['count']; 

okazji, nazw wystąpienie klasy Sqlite3 $result może być mylące (zwłaszcza w środowisku dB). Nazwałbym to $db lub $connection.

+1

wielkie dzięki za to! – Remover

+0

powinno być $ numRows = $ row ['COUNT (*)']; – Unplug

+1

@ Odłączenie: Nie, ponieważ wynik 'COUNT (*)' jest przechowywany w 'count':' COUNT (*) jako count'. –

12
$db = new SQLite3('filename.db3'); 
$count = $db->querySingle("SELECT COUNT(*) as count FROM tablename"); 
echo $count; 
2
$result = $db->query("SELECT * FROM db_name") 
$row=$result->fetchArray(SQLITE3_ASSOC); 
    // check for empty result 
    if ($row != false) { 
     // do something here if record exists 
    } 
0
<?php 
    function SqliteNumRows($query){ 
     $numRows = 0; 
     while($rows = $query->fetchArray()){ 
      ++$numRows; 
     } 
     return $numRows; 
    } 
?> 

To naprawdę pomogło mi to działa rzeczywiście można spróbować go

0

Oto sposób pracy, aby uzyskać liczbę wierszy, ponieważ ani sqlite_num_rows($result) ani $result->numRows() prac nad SQLite3:

<?php 
    $db = new SQLite3('database.db'); 

    $results = $db->query('SELECT COUNT(*) FROM (SELECT `id`,* FROM `table` ORDER BY `id` ASC);'); 
     while ($row = $results->fetchArray()) { 
      echo $row["COUNT(*)"]; 
     } 
?> 
Powiązane problemy