num_rows liefert nur „1“ statt tatsächliche Anzahl

suntrop

Erfahrenes Mitglied
Hallo. Ich erhalte immer „1“ als Rückgabe von $result->num_rows, obwohl es vier Datensätze sind die mir ausgegeben werden. Woran kann das falsche num_rows liegen?

Die SQL-Abfrage:
Code:
SELECT
		ud.id,
		ud.lastName AS Nachname,
		ud.email AS Email,
		u.active AS Aktiv
	FROM
		userdetails ud
	LEFT JOIN (
		users u
		)
		ON (
			u.id = ud.userId
			)
	WHERE
		ud.email != ""
	AND
		u.active = 1
	ORDER BY
		ud.lastName ASC
	LIMIT
		0,900
Darunter steht folgender PHP-Code:
PHP:
$result = $db->sql($sql);
$numberUsers = $result->num_rows;
#$numberUsers = mysqli_num_rows($result); liefert auch 1
if ($numberUsers >=1) {
	while ($row = $result->fetch_assoc()) {
		$allUsers[] = $row;
	}
} else {
	$allUsers = '';
}

Ich bekomme im Moment 4 Nutzer (Anzahl ist korrekt), wenn ich $allUsers in einer Schleife ausgebe. Deshalb sollte doch auch num_rows 4 sein, oder irre ich mich?
 
Versuche mal das:

Code:
SELECT
		ud.id,
		ud.lastName AS Nachname,
		ud.email AS Email,
		u.active AS Aktiv,
                COUNT(ud.id) as sum_user
	FROM
		userdetails ud
	LEFT JOIN (
		users u
		)
		ON (
			u.id = ud.userId
			)
	WHERE
		ud.email != ""
	AND
		u.active = 1
	ORDER BY
		ud.lastName ASC
	LIMIT
		0,900
 
Ja, das ergab auch vier. Habe es jetzt gefunden, woran es lag.
$smarty->assign("numberUsers", !empty($numberUsers));

Ich wusste nicht, dass mir empty() einen Boolschen-Wert zurück gibt, wenn ein Integer drin steht. An anderen Stellen, wo ein String enthalten war, ging es. Dann habe ich den String auch zurückgegeben bekommen.

Bei isset() dasselbe. Wie kann ich denn dann prüfen, ob eine Variable vorhanden ist, damit ich keine leeren Variablen übergebe?
 
Zurück