2010-04-06 9 views

Antwort

9

Vom documentation:

public bool SQLite3 :: exec (string $ query)

Führt eine Ergebnis lose Abfrage für eine bestimmte Datenbank.

Diese Methode gibt einen booleschen Wert und kein Ergebnis zurück. Wenn Sie true in eine ganze Zahl umwandeln, wird daraus 1.

Sie sollten SQLite3::query() verwenden. Beispiel (nicht getestet):

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

BTW, die Instanz der Klasse SQLite3 Namensgebung $result (insbesondere in einer Umgebung DB) kann irreführend sein. Ich würde es $db oder $connection nennen.

+1

vielen dank dafür! – Remover

+0

sollte $ numRows = $ row sein ['COUNT (*)']; – Unplug

+1

@Unplug: Nein, da das Ergebnis von 'COUNT (*)' in 'count' gespeichert wird:' COUNT (*) as 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; 
    } 
?> 

Das half mir wirklich funktioniert es tatsächlich können Sie versuchen, es

0

Hier ist ein funktionierendes Art und Weise die Anzahl der Zeilen, da weder sqlite_num_rows($result) noch $result->numRows() Arbeiten auf SQLite3 zu erhalten:

<?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(*)"]; 
     } 
?> 
Verwandte Themen