it-swarm.com.de

Was in Joomla 3.x anstelle von getNumRows () verwendet werden soll

Soweit ich weiß

$db = JFactory::getDbo();
$db->setQuery($sql);            
$db->execute();
$numRows = $db->getNumRows();

Funktioniert nicht in Joomla 3.x, oder? Ich erhalte den Fehler "Mysql_num_rows () erwartet, dass Parameter 1 eine Ressource ist". Die Abfrage funktioniert einwandfrei, wenn ich getNumRows () nicht aufrufe und einen Try/Catch-Block um das Ganze habe.

Was sollen wir stattdessen beispielsweise für eine Aktualisierungsabfrage verwenden, bei der man nicht einfach loadRowList () verwenden kann?

4
Jimmy

[EDIT] Verwenden Sie die Funktion Get Affected Rows für INSERT-, UPDATE-, REPLACE- oder DELETE-Abfragen in Joomla

$db->getAffectedRows();

.


--Below ist als ursprüngliche Antwort enthalten, aber nicht wirklich die hilfreichste Antwort

Dies wurde auf stackoverflow hier beantwortet: https://stackoverflow.com/questions/27968427/how-to-count-numbers-of-row-of-sql-query-in-joomla-and -display-it

Im Allgemeinen sieht es so aus, als wäre das Beste, was Sie in 3.x haben:

$result = $db->loadObjectList(); 
$numRows = count($result);
3
Lance

getNumRows () ist in Joomla 3.x gültig.

Was Ihren Fehler betrifft ... "getNumRows () gibt die Anzahl der Ergebniszeilen zurück, die von der letzten Abfrage gefunden wurden und auf das Lesen warten. Um ein Ergebnis von getNumRows () zu erhalten, müssen Sie ausführen es nach der Abfrage und bevor Sie irgendwelche Ergebnisse abgerufen haben. "Grundsätzlich", wenn Sie getNumRows () nach loadRowList () - oder einer anderen Abrufmethode - ausführen, erhalten Sie möglicherweise ein PHP Warnung "

https://docs.joomla.org/Selecting_data_using_JDatabase#getNumRows.28.29

2
Walt Sorensen

Das funktioniert bei mir in Joomla 3.7.5

$db->setQuery($query);
$db->execute();
echo $db->getNumRows();

Wenn ich jedoch $ result = $ db-> loadResult () hinzufügte; vor den getNumRows () bekomme ich dann den fehler den das original poster angefragt hat.

1
cwgso