Ankündigung

Einklappen
Keine Ankündigung bisher.

Blob

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von psygonis Beitrag anzeigen
    Wie Du aber auf die Idee kommst, ich würde da etwas mischen, verstehe ich immer noch nicht
    mysqli hat auch eine objektorientierte Schreibweise. Wieso verwendest du diese nicht, wenn schon dein restlicher Code auch objektorientiert ist?

    Kommentar


    • #17
      Zitat von hellbringer Beitrag anzeigen
      Es steht alles im PHP-Handbuch. Was ist der Mehrwert davon, wenn ich alles per Copy+Paste wiederkaue? Beispielcode ist auch im Handbuch. Außerdem verwende ich persönlich kein mysqli, sondern seit 15+ Jahren nur mehr PDO. Also wenn, dann kann ich dir höchstens mein Beispielcode für PDO zur Verfügung stellen. Weil ich fang jetzt nich extra wegen dir an mich mit mysqli zu beschäftigen, mal davon abgesehen, dass ich mysqli mühsam finde. Auch bin ich nicht dein persönlicher Lehrer, sondern setze nur Anreize, anhand der du dich selber informieren kannst. Wenn dir das alles zu mühsam ist, dann hast du dir mit Programmieren wohl das falsche Hobby ausgesucht.

      Du erwartest von anderen viel, lieferst selber aber eine sehr dürftige Leistung ab. Dafür schreibst du anscheinend sehr gerne lange Texte, in denen du dich über alles und jeden beklagst.
      Was ist Dein Problem? Wenn Du Dich mit der Materie nicht beschäftigst, dann musst Du doch auch nicht darauf antworten oder zumindest dann darauf hinweisen, dass Du auch nur den Link hast und sonst nix. Dann ist das doch ok. Anscheinend habe ich eben das anders verstanden als Du. Es gibt halt die Beispiele, einmal mit myqli und einmal mit PDO und es ist bei beiden unterschiedlich. Der von mir benannte Beispiellink zeigt letztendlich genau diese Vorgehensweise https://www.tutorialspoint.com/php/p..._long_data.htm
      Mit meinem Beispielstring "abc123" funktioniert das alles einwandfrei, nur mit der Benutzung meiner großen Daten erhalte ich
      Error while sending STMT_EXECUTE packet. PID=18880 in <b>D:\xampp\htdocs\projekte\uploadNew\upload2\DB\c lassesDB.php</b> on line <b>635</b><br />
      in der Zeile steht mysqli_stmt_execute($stmt); Klar, ein Fehler beim Senden des Paketes, nur warum?

      Kommentar


      • #18
        Zitat von hellbringer Beitrag anzeigen

        mysqli hat auch eine objektorientierte Schreibweise. Wieso verwendest du diese nicht, wenn schon dein restlicher Code auch objektorientiert ist?
        Bitte. Das kann man natürlich ändern, das besteht aber so seit Jahren. Und man kann nicht alles auf einmal anpassen. Im Manual steht, das beide Varianten funktionieren. Warum soll ich jetzt tagelang das sql ändern, wenn es doch auch anders geht. Wie bereits gesagt, es gibt immer verschiedene Wege. Und es sollte mit beiden Varianten funktionieren. Im Web findet man da etwas von zu großen Daten. Aber max_allowed_packet steht auf 16M, also 16MB. Das Datenpaket ist 2MB. Was soll da zu groß sein? Vielelciht muss man die Daten ja vorher noch irgendwie behandeln oder konvertieren. Ich weiß es halt nicht.

        Kommentar


        • #19
          Anpassung meiner Funktion. Funktioniert. Hat jemand Interesse an dem Ganzen, kann er mich gern kontaktieren.
          Code:
          function psySendLongData($mysql, $fieldID, $data){
              $set_get_max_allowed = 0;
              $sql_get_max_allowed = "SELECT @@global.max_allowed_packet";
              $this -> result = mysqli_query($this -> verbindung, $sql_get_max_allowed);
              $dataTemp = mysqli_fetch_array($this -> result, MYSQLI_ASSOC);
              $temp_get_max_allowed_ist = $dataTemp['@@global.max_allowed_packet'];
              $temp_get_max_allowed_soll = strlen($data);
              if($temp_get_max_allowed_soll >= $temp_get_max_allowed_ist){
                $temp_get_max_allowed_set = $temp_get_max_allowed_soll + 1024;
                $sqlQuery = 'SET @@global.max_allowed_packet = ' . $temp_get_max_allowed_set;
                $this -> result = mysqli_query($this -> verbindung, $sqlQuery);
                $set_get_max_allowed = 1;
                }
          
              $stmt = mysqli_prepare($this -> verbindung, $mysql);
              mysqli_stmt_bind_param($stmt, "b", $txt);
              $txt = NULL;
              mysqli_stmt_send_long_data($stmt, $fieldID, $data);
              mysqli_stmt_execute($stmt);
              mysqli_stmt_close($stmt);
          
              if($set_get_max_allowed == 1){
                $sqlQuery = 'SET @@global.max_allowed_packet = ' . $temp_get_max_allowed_ist;
                }
          
              }

          Kommentar


          • #20
            Ich frage mich, wozu dieses Kunstwerk gut sein soll. Jedenfalls brauchen tut man es nicht.

            PHP-Code:
            if($set_get_max_allowed 1){ 
            Diese if-Abrage ist immer TRUE.

            Und warum konfigurierst du nicht einfach deinen Datenbankserver so, dass er größere Pakete annimmt?

            Jedenfalls mit PHP globale Variablen herum zu setzen ist quasi eine Garantie für eine Race Condition. Das wird früher oder später zu Problemen führen.

            Kommentar


            • #21
              Zitat von hellbringer Beitrag anzeigen
              Ich frage mich, wozu dieses Kunstwerk gut sein soll. Jedenfalls brauchen tut man es nicht.

              PHP-Code:
              if($set_get_max_allowed 1){ 
              Diese if-Abrage ist immer TRUE.

              Und warum konfigurierst du nicht einfach deinen Datenbankserver so, dass er größere Pakete annimmt?

              Jedenfalls mit PHP globale Variablen herum zu setzen ist quasi eine Garantie für eine Race Condition. Das wird früher oder später zu Problemen führen.
              Warum musst Du nur immer meckern? $set_get_max_allowed = 1 ist ein simpler Schreibfehler, muss heißen $set_get_max_allowed == 1.
              Wozu ich das brauche, habe ich bereits ausführlich beschrieben. Wenn Du, ich betone Du!, es nicht brauchst, ist das kein Grund anzunehmen, das es sonst auch keiner braucht. Wie arrogant kann man denn nur sein?
              Datenbankserver konfigurieren geht nicht immer auf jedem Web-Paket. Nicht jeder hat einen Server, den er frei konfigurieren kann. Ich kann es mir nicht leisten, meinen Kunden zu sagen, dass Sie gefälligst meine Vorstellungen und Vorgaben umzusetzen haben oder sich ansonsten Ihre Unzulänglichkeit in die Haare schmieren und mich in Ruhe lassen sollen.

              Kommentar


              • #22
                Wie gesagt ist das Herumsetzen der globalen Variablen problematisch und wird manchmal schwer nachvollziehbare Fehler verursachen, die im Endeffekt wieder mehr Arbeit für dich bedeuten. Wenn du das willst, dann ist es halt so.

                Kommentar


                • #23
                  Zitat von hellbringer Beitrag anzeigen
                  Wie gesagt ist das Herumsetzen der globalen Variablen problematisch und wird manchmal schwer nachvollziehbare Fehler verursachen, die im Endeffekt wieder mehr Arbeit für dich bedeuten. Wenn du das willst, dann ist es halt so.
                  Das ist quasi eine abschaltbare Zusatzfunktionalität.

                  Kommentar


                  • #24
                    Zitat von psygonis Beitrag anzeigen
                    Das ist quasi eine abschaltbare Zusatzfunktionalität.
                    Also quasi eine abschaltbare Fehlerquelle. Also besser nicht einschalten?

                    Kommentar


                    • #25
                      Ob jetzt PDO oder MySQLi spielt im Grunde keine Rolle. Man sollte das Verständnis für das Prinzip entwickeln, dann kann man auch anhand von PDO-Beispielen eine MySQLi Adaption herstellen.
                      Findet man keine Möglichkeit dazu wird MySQLi entweder die falsche Wahl gewesen sein oder man selber hat nicht ausreichend Hintergrundwissen für die Umsetzung.
                      Beides ist kein Grund sich die ganze zeit zu kappeln, denn es gibt zu jedem Fall eine Lösung: Entweder zu PDO wechseln oder sich einfach tiefer mit dem Thema befassen, das zum Problem führt.

                      Diese Plattform bietet in erster Linie Hilfe zur Selbsthilfe und genau das wurde getan. Aus meiner Sicht scheitert es hier an der Selbsthilfe, die hin und wieder auch ein Umdenken erfordert.

                      [MOD: geschlossen]
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar

                      Lädt...
                      X