Ja, das ist so.
Ankündigung
Einklappen
Keine Ankündigung bisher.
PHP PDO - Start- und Endzeile
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zitat von VPh Beitrag anzeigenMoin,
Limit lässt sich nicht dynamisch per Prepared Statement setzen. Wenn du die Limit-Werte zu int castest (falls sie von irgendeiner User-Eingabe oder ähnlichem stammen können), ist die Abfrage an der Stelle aber trotzdem sicher.
PHP-Code:$sql = $pdo->prepare("SELECT title FROM content WHERE parent = ? LIMIT " . (int)$anfang . ", " . (int)$ende);
Jetzt eine andere Idee (achtung Anfänger!):
Meine MySQL Datenbank hat eine erste Spalte, welche als # bezeichnet wird. Hier sind alle Zeilen nacheinander nummeriert. Ist es möglich diese Zahlen mit WHERE zu greifen? Ich arbeite mit MySQLDumper..
Sowas wie:
PHP-Code:$sql = $pdo->prepare("SELECT title FROM content WHERE parent = ? and # = ?);
$sql->execute(array($parent, $number));
foreach ($sql as $row) {
$title = $row['title'];
$number++;
}
Kommentar
-
Wenn ich den Anfang auf 1 setze, dann erhalte ich logischerweise die zweite Zeile, sobald ich den Anfang aber auf 0 setze, dann bekomme ich gar nichts!Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Zitat von Arne Drews Beitrag anzeigenWas denkst Du, wofür LIMIT steht?
Das Problem ist: wenn ich Anfang auf 0 Setze und Ende auf 1, dann erhalte ich zwar die erste Zeile aber wenn ich die beide Werte in der Schleife immer um 1 erhöhe, dann erhalte ich z.B. bei Anfang=1 und Ende=2, zwei Einträge.
Kommentar
-
Nein, einer für die Anzahl an gewünschten Datensätzen und einer für den Beginn ab welchem Datensatz.
Bitte lies die Doku, da steht das alles.Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
-
Meine MySQL Datenbank hat eine erste Spalte, welche als # bezeichnet wird.
Mach mal eine Kurs bevor du mit Datenbanken hantierst oder lese das Handbuch ein mal durch.
Am besten du merkst dir einfach, dass alles ausser a biz Z und Unterstrich, verboten ist, also auch ö,ä Leerzeichen usw, alles nicht verwenden in Tabellenbezeichnern.
Kommentar
-
Zitat von protestix Beitrag anzeigenWer kommt denn auf so eine Idee?
Mach mal eine Kurs bevor du mit Datenbanken hantierst oder lese das Handbuch ein mal durch.
Am besten du merkst dir einfach, dass alles ausser a biz Z und Unterstrich, verboten ist, also auch ö,ä Leerzeichen usw, alles nicht verwenden in Tabellenbezeichnern.
Kommentar
-
Warum verwendest du etwas, das nicht mehr weiterentwickelt wird, bzw. aufgegeben wurde?
Siehe http://www.mysqldumper.de/
Kommentar
-
Obwohl mysqldumper nicht weiterentwickelt wird, gibt es eine Version, welche mit PHP7 läuft. Somit kann man noch einige Zeit damit arbeiten. Der Vorteil bei mysqldumper war bis jetzt gewesen, dass ich größere Tabellen ohne Timeout hochladen konnte und automatische Backups per Cronjob ausführen konnte. Das sind aber auch schon die einzigen Funktionen die ich verwende, es werden also keine komplexe Opreationen durchgeführt..
Kommentar
-
JoePetts
1. Hol dir zum Entwickeln das kostenlose Tool HeidiSQL !
2. Benutze benannte Platzhalter und spendiere fürs SQL eine extra Variable. Beispiel
PHP-Code:$limit = 2;
$offset = 2;
$sql = "SELECT id, name, vorname from testdata where id > :id LIMIT :limit OFFSET :offset";
$stmt = $memDB->prepare($sql);
$stmt->bindValue('id',2, PDO::PARAM_INT);
$stmt->bindValue('limit',$limit, PDO::PARAM_INT);
$stmt->bindValue('offset',$offset, PDO::PARAM_INT);
$stmt->execute();
$myResult = $stmt->fetchAll(PDO::FETCH_OBJ);
Mit den benannten Platzhaltern hat du eine bessere Übersicht als mit diesen ? und das eklige Abzählen der Position entfällt auch.
Kommentar
-
Zitat von jspit Beitrag anzeigenJoePetts
1. Hol dir zum Entwickeln das kostenlose Tool HeidiSQL !
2. Benutze benannte Platzhalter und spendiere fürs SQL eine extra Variable. Beispiel
PHP-Code:$limit = 2;
$offset = 2;
$sql = "SELECT id, name, vorname from testdata where id > :id LIMIT :limit OFFSET :offset";
$stmt = $memDB->prepare($sql);
$stmt->bindValue('id',2, PDO::PARAM_INT);
$stmt->bindValue('limit',$limit, PDO::PARAM_INT);
$stmt->bindValue('offset',$offset, PDO::PARAM_INT);
$stmt->execute();
$myResult = $stmt->fetchAll(PDO::FETCH_OBJ);
Mit den benannten Platzhaltern hat du eine bessere Übersicht als mit diesen ? und das eklige Abzählen der Position entfällt auch.
Kommentar
-
Zitat von jspit Beitrag anzeigenHeidiSQL ist als Hilfe für dein Entwicklungssystem gedacht und nicht für deinen Produktivserver. Für das automatische Erstellen und Versenden von DB-Backups ist es nicht geeignet.
Kommentar
Kommentar