2016-06-17 9 views
1

i bin neu in PDO und jetzt bin vor mir diesePaginierung Decke eines Array PDO mit

Uncaught Error: Unsupported operand types

in mysql_ (alte Art und Weise) es gut funktionieren zu setzen Grenze mit Reihen zu teilen, aber es gewann ‚t mit PDO arbeiten,

dies dem alten Weg ist

Grenze 4 Start von 0, die Datenbank mehr als 100 zu zählen ist, die Logik ganz gut

$query=mysql_query("SELECT * FROM `articles` LIMIT $start, $limit"); 
$rows=mysql_num_rows(mysql_query("SELECT * FROM `articles`")); 
$total=ceil($rows/$limit); 

und mit der gU (neue Art, wie sie sagte)

$query=$db -> query("SELECT * FROM `articles` LIMIT $start, $limit"); 
$rows=$query->fetch(PDO::FETCH_ASSOC); 
$total=ceil($rows/$limit); 

und ich bekomme den Fehler msg, irgendwelche Hinweise?

+0

neben anderen dingen, in alten mysql haben Sie 2 Abfragen ausgeführt, während mit PDO nur eins. Es ist also nicht PDO, sondern ungenauer Übergang. Sie müssen dem Code, den Sie schreiben, mehr Aufmerksamkeit schenken. einige zufällige Linien zusammen zu schlagen und dann Fremde zu fragen, es für dich zu reparieren, ist nicht der richtige Weg. –

+0

@YourCommonSense thx pro Programmierer –

+0

Als Hinweis, um die Form Ihrer Frage zu verbessern, wäre es gut, wenn Sie den Ort markieren, auf den die Fehlermeldung zeigt. – Philipp

Antwort

-1

In Ihrem mysql_-Beispiel holen Sie explizit die rowcount einer Abfrage.

In Ihrer PDO-Implementierung holen Sie nur ein Ergebnis aus der Ergebnismenge, die Ihre Abfrage zurückgegeben hat.

$query = $db->query("SELECT * FROM `articles` LIMIT $start, $limit"); 
$rows = $query->fetchAll(PDO::FETCH_ASSOC); 
$total = ceil(count($rows)/$limit); 

bearbeiten: Sie könnten etwas tun Wenn es nur um die Zeilen zu zählen, sollten Sie zu so in der db.

$query = $db->query("SELECT count(*) AS rowcount FROM `articles` LIMIT $start, $limit"); 
$rows = $query->fetch(PDO::FETCH_ASSOC); 
$total = ceil($rows['rowcount']/$limit); 
+0

brilliant, aber ich bin immer noch ein bisschen verwirrt mit count, wenn ich nur ein Ergebnis holen dann wie wäre es mit etwas ['count'] ?? –

+0

Ich habe Ihre '$ query-> fetch()' in '$ query-> fetchAll() geändert;' Auf diese Weise erhalten Sie die gesamte Ergebnismenge in $ rows und da es ein Array ist, können Sie einfach php's count() verwenden es. Zu beachten ist allerdings, wenn diese Abfrage nur über das Zählen der Ergebnismenge erfolgt, wäre es in der Tat performant und semantisch besser, die Anzahl in mysql einfach direkt auszuwählen und zurückzugeben. – Philipp

+0

thx Mann, ich beginne zu wissen. –