mysqli, prep Statement

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

  • mysqli, prep Statement

    Kann mir mal jemand erklären warum diese paar billigen Zeilen nicht funktionieren wollen?

    PHP-Code:
    $prep $this->mysqli->prepare('INSERT INTO guestbook (Von, Betreff, Datum)
       VALUES (?, ?, NOW())'
    );
    echo 
    $prep->param_count;
    $prep->bind_param('ss'$this->Von$this->Betreff); 
    Er gibt 2 für param_count aus, ich übergebe zwei Vars, alles perfekt, aber er meint
    Code:
    2
    Warning: mysqli_stmt::bind_param() : Number of variables doesn't 
    match number of parameters in prepared statement in ...
    Nehme ich nur einen Wert funktioniert es (z.B. Betreff raus editieren)
    PHP-Code:
    $prep $this->mysqli->prepare('INSERT INTO guestbook (Von, Datum) VALUES (?, NOW())');
    $prep->bind_param('s'$this->Von); 

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

  • #2
    ins Blaue gefragt, existiert $this->Betreff ?

    Kommentar


    • #3
      Original geschrieben von tcpip
      ins Blaue gefragt, existiert $this->Betreff ?
      ja

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        Bug report 31037

        Upgraded PHP to 5.0.4-10.5 and that got the mysqli_stmt_bind_param()
        function working again with my scripts that only had INSERT SQL queries
        in them.

        und so weiter. Ich habe bugs.php.net nicht zu Ende durchgeschaut. Die Suche war: advanced search: myslqi prepare ALL.

        doch noch weitergeschaut, im gleichen bug report etwas später:
        After a couple of nights I've found the solution. Upgrading to newest
        versions of PHP and MySQL don't solve the problem.Both PHP and MySQL
        have a lib named libmysql but those libs are not the same. Make PHP to
        use php/libmysql and everythig will be OK. For ensure the result just
        rename the libmysql library from MySQL install and execute your php
        script correct!
        HTH

        Kommentar


        • #5
          After a couple of nights I've found the solution. Upgrading to newest
          versions of PHP and MySQL don't solve the problem.Both PHP and MySQL
          have a lib named libmysql but those libs are not the same. Make PHP to
          use php/libmysql and everythig will be OK. For ensure the result just
          rename the libmysql library from MySQL install and execute your php
          script correct!
          Wenn ich diese etwas vermurkste Englisch richtig verstehe, soll ich eine dll umbenennen?
          Hab ich getan, ich hab einmal die von php mit einer Tilde versehen, einmal die von sql, es hat beide Male keinen Unterschied gemacht...
          Des weiteren hab ich mir den Bug selbst mal angeschaut und offensichtlich ist die Funktionalität dieses Features per rand() festgelegt ... hier funktioniert es mit unterschiedlichen, da funktionierts es mit gleichen Versionen, reverse funktioniert es jeweils nicht, ...

          Alle neuen Datenbankspielereien von php sucken. PDO streut freiwillig Fehler aus, wenn man eine Variable zum Result catchen mehrmals verwendet, hier ist jetzt irgendeine Inkompatibilität mit lib-Versionen.... hallo?! Das kanns jawohl nicht sein ~_~
          Dann benutz ich halt weiter real_escape_string, als ob ich Bock und Zeit hätte mich mit solch dummen Sachen auseinanderzusetzen...

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Das Studium des advanced search ist sicher der erste Schritt. Mein Beitrag war eher
            gedacht aufzuzeigen, dass da etwas ist, als gerade die Lösung herauszudestillieren.
            Soviel ich verstanden habe, muss gemäss diesem bug reporter libmysql.dll von der
            php distribution verwendet werden. Bei ihm hat es übrigens mit 1 Parameter nicht
            funktioniert.
            Es wunderte mich sowieso, dass für ein Guestbook objektorientierte mysql-i prepares
            vorkommen und vermutete, es wird seinen tutorialischen oder Teil-in-einem-riesigen-Ganzen Grund haben.

            [color=red]übrigens: apache neu gestartet?[/color]
            Zuletzt geändert von tcpip; 30.06.2006, 20:37.

            Kommentar


            • #7
              s.u.
              Zuletzt geändert von Hopka; 30.06.2006, 23:41.
              hopka.net!

              Kommentar


              • #8
                Original geschrieben von ghostgambler
                PDO streut freiwillig Fehler aus, wenn man eine Variable zum Result catchen mehrmals verwendet, hier ist jetzt irgendeine Inkompatibilität mit lib-Versionen.... hallo?! Das kanns jawohl nicht sein ~_~
                Open Source, Junge, Open Source. Friss oder Stirb. Warum sollten sich die "Entwickler" auch einen Dreck drum scheren, ob ihr zusammengefrickelter Scheiß bei irgendwem außer ihnen selbst funktioniert? Wir können halt nur da stehen und fluchen. Oder selbst irgendwelche halbgare Software unter einer Open Source Lizenz veröffentlichen und uns schäbig lachen bei dem Gedanken an die Trottel wie sie sich drüber aufregen, dass bei ihnen nix so funktioniert wie es soll.
                EDIT:
                Shit, sollte kein Doppelpost werden.
                hopka.net!

                Kommentar


                • #9
                  Original geschrieben von ghostgambler
                  Alle neuen Datenbankspielereien von php ****en. PDO streut freiwillig Fehler aus, wenn man eine Variable zum Result catchen mehrmals verwendet, hier ist jetzt irgendeine Inkompatibilität mit lib-Versionen....
                  Dann benutz ich halt weiter real_escape_string, ...
                  Durchaus eine sinnvolle Warnung, ein Hinweis, sich auf die traditionellen mysql_ Funktionen zu beschränken, bzw. im Bedarfsfall die wrappers selbst zu machen.

                  PS doppelpost -> ändern -> leeren des post

                  Kommentar


                  • #10
                    Original geschrieben von tcpip
                    Soviel ich verstanden habe, muss gemäss diesem bug reporter libmysql.dll von der
                    php distribution verwendet werden.
                    hatte ich auch probiert, hatte sie über cross kopiert und sowohl apache als auch mysql neu gestartet, hat sich nix getan

                    Es wunderte mich sowieso, dass für ein Guestbook objektorientierte mysql-i prepares
                    vorkommen und vermutete, es wird seinen tutorialischen oder Teil-in-einem-riesigen-Ganzen Grund haben.
                    Es hat den Sinn sauberer Programmierung.
                    Die Objektorientierung gehört einfach zu meinem Stil, wieso soll ich auf die prozeduralen mysqli-Funktionen zurück greifen, wenn ich sie wunderbar in OOP nutzen kann?!
                    Und prepared Statements sollen rein theoretisch (und sind sie auch in jeder anderen Programmiersprache, wo sie dann natürlich auch funktionieren) der bessere Weg um Daten injection-frei in die Datenbank zu kriegen. Aber das interessiert ja offensichtlich niemanden da.
                    Der Bug wurde 2004 eröffnet und es hat sich offensichtlich nichts in der hinsicht getan, kein Wunder das niemand die Erweiterung benutzt. Man suche mal nach schönen Tutorials für mysqli, entweder sie sind inhaltslos, oder sie kauen für die iq-unter-5 Leute die Manual nochmal durch. Schneller war die Extension in meinen Tests auch nicht; da hat sich php echt von hinten ins Knie mit geschossen...


                    Wie Hopka so schön sagte, Friss oder Stirb,
                    die Erweiterung hätten sie auch getrost im Gulli versacken lassen können...(das kommt davon, wenn man sich VORHER keine Gedanken über eventuelle Inkompatibilitäten zwischen den Versionen macht >.<)

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      Hier ein link von mysql.com: http://dev.mysql.com/downloads/connector/php/

                      er empfiehlt die Versionen von mysql zu verwenden....

                      Kommentar


                      • #12
                        Original geschrieben von tcpip
                        Hier ein link von mysql.com: http://dev.mysql.com/downloads/connector/php/

                        er empfiehlt die Versionen von mysql zu verwenden....
                        und was mache ich wenn ich Webspace kriege, auf dem zwei verschiedene Versionen laufen?
                        Das Problem ist nicht damit behoben, dass ich bei mir lokal das mit workarounds ans Laufen bringe, das Problem ist mittlerweile zu tief verwurzelt, als dass es so leicht auszubügeln wäre :/

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Wahre Argumente. Immerhin ist ausgekommen, woran es liegt und hoffentlich noch rechtzeitig. *tröst*

                          Kommentar


                          • #14
                            Original geschrieben von tcpip
                            und hoffentlich noch rechtzeitig. *tröst*
                            jo, das Gästebuch war der erste Insert und just btw. der erste von nur drei Stück ^^
                            aber trotzdem danke für deine Suchaktion

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar

                            Lädt...
                            X