Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP PDO - Start- und Endzeile

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Ja, das ist so.

    Kommentar


    • #17
      Zitat von VPh Beitrag anzeigen
      Moin,

      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); 
      Habe versucht mein Vorhaben mit dieser Lösung zu realisieren, was auf den ersten Blick auch funktionierte. Allerdings komme ich nicht an die erste Zeile dran. 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!

      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


      • #18
        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!
        Was denkst Du, wofür LIMIT steht?
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #19
          Zitat von Arne Drews Beitrag anzeigen
          Was denkst Du, wofür LIMIT steht?
          Aber es sind doch zwei Angaben beim LIMIT. Eine für den Anfang und die zweite für das Ende soweit ich das verstehe oder?

          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


          • #20
            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 TutorialsPreComposed Packages

            Kommentar


            • #21
              Meine MySQL Datenbank hat eine erste Spalte, welche als # bezeichnet wird.
              Wer 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


              • #22
                Ich verdrücke mich in die Ecke.. Sorry, hab's nicht gecheckt. Danke für die Info!

                Kommentar


                • #23
                  Zitat von protestix Beitrag anzeigen
                  Wer 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.
                  Ich habe etwas über die Erstellung der Spalten und die erlaubten Zeichen in MySQL bereits gelesen und kann dich beruhigen, die Spalte # wurde nicht von mir erstellt. Inzwischen schätze ich eher, dass MySQLDumper diese Spalten einfach automatisch darstellt und die Anzahl der Zeilen zu zeigen...

                  Kommentar


                  • #24
                    Warum verwendest du etwas, das nicht mehr weiterentwickelt wird, bzw. aufgegeben wurde?

                    Siehe http://www.mysqldumper.de/

                    Kommentar


                    • #25
                      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


                      • #26
                        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',2PDO::PARAM_INT);
                        $stmt->bindValue('limit',$limitPDO::PARAM_INT);
                        $stmt->bindValue('offset',$offsetPDO::PARAM_INT);
                        $stmt->execute();
                        $myResult $stmt->fetchAll(PDO::FETCH_OBJ); 
                        Die Variable $sql kannst du zu Testzwecken ausgeben, die Platzhalter durch fixe Zahlen ersetzen und das extra mit HeidiSQL unabhängig von PHP testen.
                        Mit den benannten Platzhaltern hat du eine bessere Übersicht als mit diesen ? und das eklige Abzählen der Position entfällt auch.
                        PHP-Klassen auf github

                        Kommentar


                        • #27
                          Zitat von jspit Beitrag anzeigen
                          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',2PDO::PARAM_INT);
                          $stmt->bindValue('limit',$limitPDO::PARAM_INT);
                          $stmt->bindValue('offset',$offsetPDO::PARAM_INT);
                          $stmt->execute();
                          $myResult $stmt->fetchAll(PDO::FETCH_OBJ); 
                          Die Variable $sql kannst du zu Testzwecken ausgeben, die Platzhalter durch fixe Zahlen ersetzen und das extra mit HeidiSQL unabhängig von PHP testen.
                          Mit den benannten Platzhaltern hat du eine bessere Übersicht als mit diesen ? und das eklige Abzählen der Position entfällt auch.
                          Danke erstmal für den Tipp. Wie sieht es denn mit der Backup-Funktion aus? Kann man diese automatisch an ein FTP verschicken?

                          Kommentar


                          • #28
                            HeidiSQL 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.
                            PHP-Klassen auf github

                            Kommentar


                            • #29
                              Zitat von jspit Beitrag anzeigen
                              HeidiSQL 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.
                              Alles klar. Danke. Ich werde mir das mal anschauen. Schließlich gibt es auch andere Wege DB-Backups zu erstellen...

                              Kommentar

                              Lädt...
                              X