Cryptic Sven: Einfache abfrage Datenbank

0 53

Einfache abfrage Datenbank

Cryptic Sven
  • datenbank
  • php
  1. 0
    Cryptic Sven
  2. 0
    Rolf B
  3. 0
    Rolf B
    1. 0
      Cryptic Sven
    2. 0
      dedlfix
      1. 1
        Rolf B
        1. 0
          dedlfix
  4. 0
    tk
    1. 0
      Cryptic Sven
      1. 0
        Mitleser 2.0
        1. 0
          MudGuard
        2. 0
          Cryptic Sven
          1. 0
            Mitleser 2.0
            1. 0
              Cryptic Sven
              1. 0
                Mitleser 2.0
                1. 0
                  Cryptic Sven
                  1. 0
                    Der Martin
                    1. 0
                      Cryptic Sven
                      1. 0
                        Der Martin
                        1. 0
                          Cryptic Sven
                          1. 0
                            Mitleser 2.0
      2. 0
        tk
        1. 0
          Cryptic Sven
      3. 0
        dedlfix
  5. 0
    encoder
    1. 0
      Cryptic Sven
    2. 0
      Cryptic Sven
      1. 0
        encoder
        1. 0
          Cryptic Sven
          1. 0
            Cryptic Sven
            1. 0
              Cryptic Sven
              1. 0
                tk
              2. 0

                Einfache abfrage Datenbank - FEHLER GEFUNDEN

                Cryptic Sven
                1. 0
                  Cryptic Sven
                2. 0
                  Random2356
                  1. 0
                    Cryptic Sven
              3. 0
                Rolf B
                1. 0
                  Cryptic Sven
                  1. 0
                    dedlfix
                2. 0
                  Cryptic Sven
                  1. 0
                    Der Martin
                3. 0
                  dedlfix
    3. 0
      dedlfix
      1. 0
        encoder
        1. 0
          Der Martin
          1. 0
            encoder
            1. 0
              Rolf B
            2. 0
              Der Martin
              1. 0
                Rolf B
              2. 0
                Rolf B
                1. 0
                  Der Martin
              3. 0
                encoder

OMG ich bin nur froh das mir das atmen im Blute liegt sonst wäre ich selbst dazu zu doof ;_) Sorry aber ich habe mal wieder eine Frage und komm nicht auf die Lösung oder finde meinen Fehler.

Aktuell bekomme ich nichtmal ne einfach abfrage an meine Datenbank hin.

$dbhost='Server';
$dblogin='User';
$dbpwd='yxz';
$dbname='meine Datenbank';
mysqli_connect($dbhost, $dblogin, $dbpwd) 
      or die('Verbindung zur Datenbank ist leider fehlgeschlagen');
mysqli_select_db($dbname);
$result = mysqli_query("SELECT * FROM kategorie WHERE shopid = '1'");
while($row = mysqli_fetch_array($result))
{
	echo '<li><a tabindex="0" href="#">'.$row[name].'</a></li>';
}

Edit Rolf B: ~~~ Marker gesetzt und Einrückung normiert

wo liegt hier der Fehler? Warum wird nix auf meiner Seite wiedergegeben ... es sind aktuell 9 Daten in der DB-Tabelle und mit dieser Abfrage soll alles wieder gegeben werden was mit der shopid 1 deklariert wurde was aktuell 5 Daten sein sollten. Ich bin echt am verzweifeln. Immerhin habe ich schon mitbekommen das man nicht mehr wie Früher mysql schreibt sondern seit PHP heißt es mysqli Was hat sich noch alles geändert?

akzeptierte Antworten

  1. @Rolf B. Danke fürs einrücken des Quelltextes ... nichtmal das bekomm ich hin ... langsam zweifel ich an mir selbst

  2. Hallo Sven,

    (1) mysqli_select_db kann man verwenden, man kann die gewünschte DB aber auch als 4. Parameter beim Connect mitgeben. Die select_db Funktion braucht man dann, wenn über eine Connection mehr als eine Datenbank erreichbar ist und man umschalten möchte.

    Falls Du nicht weißt, was ich meine: Die Connection verbindet einen bestimmten User mit einem Datenbankserver. Auf dem Server kann es für diesen User mehrere Datenbanken geben. Und zwischen denen kann man damit auswählen. Zumeist ist das nicht erforderlich.

    (2) mysqli ist nicht mysql. Bei mysql gibt es eine "aktuelle Verbindung" und man muss den mysql_* Funktionen keinen Verweis auf die Verbindung mitgeben. Das ist bei mysqli anders, diese Schnittstelle ist eigentlich objektorientiert und die mysqli_* Funktionen sind lediglich eine Hülle um die Objektschnittstelle. Naja, oder andersrum, wer weiß 😉.

    Jedenfalls braucht mysqli_query als ersten Parameter die Datenbankverbindung, das ist das, was mysqli_connect zurückgibt.

    Guckst Du.

    Rolf

    --
    sumpsi - posui - obstruxi
  3. Hallo Cryptic,

    ... und natürlich muss man die Rückgabe vom mysqli_query auch überprüfen. Im Fehlerfall kommt kein mysqli_result Objekt zurück, sondern ein boolesches FALSE. Deswegen der === Vergleich, der unterlässt den Versuch, Typen anzugleichen.

    $result = mysqli_query($db, "SELECT foo FROM bar");
    if ($result === FALSE)
    {
       // Error, Fehlertext liefert mysqli_error($db)
    }
    else
    {
       // Ergebnis verarbeiten
    }
    

    Rolf

    --
    sumpsi - posui - obstruxi
    1. OK ich merk schon ich kann all meine Bücher die ich mir damals gekauft habe unter anderem PHP5 wegschmeißen und nochmal bei NULL anfangen zu lernen.

      In meinem Fall soll es nur eine Datenbank sein man kann dort ja verschiedene Tabellen anlegen das sollte ausreichen selbst für einen OnlineShop.

      Aber vielen Dank für die Hilfe soweit doch wie ich in deinem Quelltext gesehen habe sind da viele neue Sachen dabei das ich erstmal all meine Bücher entsorge und mich nach einer Seite im WWW umschaue um alles nochmal von neuem zu lernen als hätte ich noch nie von PHP gehört.

    2. Tach!

      ... und natürlich muss man die Rückgabe vom mysqli_query auch überprüfen. Im Fehlerfall kommt kein mysqli_result Objekt zurück, sondern ein boolesches FALSE. Deswegen der === Vergleich, der unterlässt den Versuch, Typen anzugleichen.

      Diese Ausdrücklichkeit kann man sich sparen, weil das Ergebnis im Gutfall entweder ein Objekt oder true ist, also kein Wert, der im booleschen Kontext nach false konvertiert wird.

      dedlfix.

      1. Hallo dedlfix,

        wenn man genau weiß, was man tut, kann man das machen.

        Es ist aber nicht bei jeder API-Funktion von MYSQL so. Ein fetch kann NULL oder FALSE zurückgeben, da muss man gezielt testen, und deshalb gebe ich die Empfehlung, es bei den DB-APIs immer mit === FALSE zu tun. Es ist mehr Tipparbeit, erspart aber Nachdenken über "muss ich oder muss ich nicht" und stellt die Intention klarer heraus.

        Sven hat ja schon klargestellt, dass er bis zum Experten noch etwas Weg zurückzulegen hat.

        Rolf

        --
        sumpsi - posui - obstruxi
        1. Tach!

          wenn man genau weiß, was man tut, kann man das machen.

          Wenn man nicht genau weiß, was man tut, sollte man das Programmieren - besonders wenn fremde Daten verarbeitet werden - hinterfragen, um es mal milde auszudrücken.

          Es ist aber nicht bei jeder API-Funktion von MYSQL so.

          Hat auch niemand behauptet. Man muss bei jeder verwendeten Funktion separat wissen (oder nachlesen), was die zurückgegebenen Werte sind, und dann alle möglichen Verzweigungsmöglichkeiten prüfen. Es hilft nicht, typsichere Vergleiche zu verwenden, um aus der Nummer rauszukommen.

          Ein fetch kann NULL oder FALSE zurückgeben, da muss man gezielt testen,

          Ja, da ist es erforderlich. Auch an anderen Stellen PHPs, wo nach false konvertierende Werte auftreten können. Das macht es noch lange nicht erforderlich, an allen anderen eindeutigen Stellen den Code unnötig komplex zu gestalten.

          Es ist mehr Tipparbeit, erspart aber Nachdenken über "muss ich oder muss ich nicht" und stellt die Intention klarer heraus.

          Sich Nachdenken ersparen zu wollen, finde ich einen Irrtum. Dann muss man zusätzlich darüber nachdenken, ob man sich das Nachdenken ersparen kann, oder ob sich das im konkreten Fall vielleicht sogar zum Nachteil auswirken kann.

          Ein typsicherer Vergleich erhöht jedenfalls nicht automatisch die Sicherheit, nur weil darin das Wort "sicher" vorkommt. Es kommt vielmehr darauf an, den Programmfluss so zu gestalen, dass man gar nicht in die Bedrängnis kommt, dass einem der typsichere Vergleich das Leben rettet. Ich verwende typsichere Vergleiche, wenn sich eine fachliche Notwendigkeit ergibt, nicht weil ich mir das Nachdenken ersparen möchte.

          dedlfix.

  4. Hallo,

    wo liegt hier der Fehler? Warum wird nix auf meiner Seite wiedergegeben ...

    Dann bricht PHP das Script mit einer Fehlermeldung ab. Wenn dann noch die Einstellung display_errors abgeschalten ist und/oder error_reporting nicht alle Fehlermeldungen ausgibt, ergibt das eine leere Seite. Stell also die beiden Einstellungen entsprechend ein, dann solltest du eine Fehlermeldung bekommen.

    Was sie Fehlermeldung sein wird kann ich dir aber auch schon so sagen:

    Immerhin habe ich schon mitbekommen das man nicht mehr wie Früher mysql schreibt sondern seit PHP heißt es mysqli Was hat sich noch alles geändert?

    Einfach mysql durch mysqli zu ersetzen reicht nicht: mysqli_query braucht zwei Parameter, als erster Parameter muss noch die Verbindungskennung übergeben werden die du allerdings noch in einer Variablen speichern musst. Im Wiki gibt es auch weitere Informationen zum Umstieg von mysql (wobei ich nicht mysqli sondern PDO empfehlen würden).

    Zusätzlich wirst du noch eine Fehlermeldung bekommen dass die Konstante »name« nicht existiert. In der Zeile:

    echo '<li><a tabindex="0" href="#">'.$row[name].'</a></li>';
    

    muss es heißen $row['name'] - mit PHP8 wurde die Stufe der dabei geworfenen Fehlermeldung erhöht (falsch war das aber schon immer).

    Gruß
    Tobias

    1. PHP 8 kann ich leider nicht nutzen da bei meinem Servrhost nur PHP7 läuft.

      Das Verrückte ist ja das keine Fehler angezeigt werden und auch auf der Seite keinerlei abbrüche stattfinden es wird einfach nur nix angezeigt.

      Aber dennoch danke für eure Hilfen. Aber ehrlich gesagt werd ich nun alles aus meinem Kopf löschen und nochmal ganz von vorne lernen .... es bringt mir jetzt nix einzelne Teile im Quelltext zu ersetzen und nichtmal zu wissen warum ich es denn so ändern muß wie ihr es mir hier schreibt.

      Darum fang ich nochmal ganz von vorne an. Zum Glück geht noch nicht viel Quelltext verloren und was das lernen von PHP & Co. angeht hat mir schon immer gefallen. Dann muß mein Shop halt noch nen Monat länger warten 😉

      Edit: Erschwerend kommt bei mir noch dazu das ich leider mit Ü40 kein einziges Wort english kann daher muß ich mich nach einer Seite rein deutsch umschauen um zu lernen 😲

      1. Darum fang ich nochmal ganz von vorne an. Zum Glück geht noch nicht viel Quelltext verloren und was das lernen von PHP & Co. angeht hat mir schon immer gefallen. Dann muß mein Shop halt noch nen Monat länger warten 😉

        Möchte Dir nicht zu Nahe treten, aber Dein Zeitplan klingt doch seeehr optimistisch… Was schätzt Du, würde ein PHP-Profi für den Neubau eines halbwegs funktionalen und sicheren Shops einplanen?

        Will sagen: vielleicht greifst Du besser auf fertige Shopsysteme im Netz zurück, wenn Du in absehbarer Zeit ein Ergebnis haben möchtest…

        1. Hi,

          Möchte Dir nicht zu Nahe treten, aber Dein Zeitplan klingt doch seeehr optimistisch… Was schätzt Du, würde ein PHP-Profi für den Neubau eines halbwegs funktionalen und sicheren Shops einplanen?

          Nicht zu vergessen: die Datenschutzrechtlichen Aspekte - es werden ja Kundendaten gespeichert …

          cu,
          Andreas a/k/a MudGuard

        2. Eigentlich bin ich immer sehr optimistisch. Aber ich hab ja geschrieben das es ein Monat länger warten muß nicht das ich es in einem Monat fertig habe 😉 spaß an Wer lesen kann ist klar im Vorteil spaß aus

          P.S.: ich bin kein Freund von fertigen Baukästen. Zum einen kosten die mich mehr als einen Server zu mieten und selber zu coden und zum anderen ist man bei Baukästen in irgendeiner Form immer eingeschränkt. Und wenn ich estwas mache dann will ich es so haben wie ich es will und will nicht ausweichen müßen wegen irgendwelcher einschränkungen.

          1. Eigentlich bin ich immer sehr optimistisch. Aber ich hab ja geschrieben das es ein Monat länger warten muß nicht das ich es in einem Monat fertig habe 😉 spaß an Wer lesen kann ist klar im Vorteil spaß aus

            Na dann: viel Erfolg dabei!

            Nochmal aus Interesse meine Frage: was schätzt Du, würde ein PHP-Profi für den Neubau eines halbwegs funktionalen, sicheren, DSGVO-konformen… Shops einplanen?

            1. Ich habe keine Ahnung wie lange sowas dauert,ich selber habe mir da keine Zeit gesetzt denn solange der Shop nicht fertig ist gibt es ja noch Ebay & Amazon worüber ich auch verkaufe. Ich hetz mich sehr ungern da es dann nie was anständiges wird. In der Ruhe liegt die Kraft. Aber länger wie 3-4 Monate glaube ich nicht. Habe ja vor 16 Jahren eigene Foren und Browsergames gecodet leider ist nur alles damals aus Privaten Gründen zum erliegen gekommen. Somit habe ich mindestens einen winzigen Vorteil und muß nicht alle neu erlernen (die hoffnung stirbt zuletzt).

              1. Ich habe keine Ahnung wie lange sowas dauert,ich selber habe mir da keine Zeit gesetzt denn solange der Shop nicht fertig ist gibt es ja noch Ebay & Amazon worüber ich auch verkaufe. Ich hetz mich sehr ungern da es dann nie was anständiges wird. In der Ruhe liegt die Kraft. Aber länger wie 3-4 Monate glaube ich nicht. Habe ja vor 16 Jahren eigene Foren und Browsergames gecodet leider ist nur alles damals aus Privaten Gründen zum erliegen gekommen. Somit habe ich mindestens einen winzigen Vorteil und muß nicht alle neu erlernen (die hoffnung stirbt zuletzt).

                3-4 Monate sind komplett utopisch, sorry.

                Sollte Dich der Rat eines alten Hasen interessieren: Du verkaufst also bereits erfolgreich Dinge via eBay und Amazon, ja? Dann konzentriere Dich auf Dein Verkaufstalent und investiere Deine Zeit da rein.

                Wenn Du einen eigenen Shop willst, dann kaufe / miete Dir einen Fertigen. Kaufen und selber warten ist auch so eine Sache. Nachdem, was ich bislang rauslese, würde ich Dir zu einer auf fremdem Hoster gewarteten Mietlösung wie z.B. Shopify raten.

                Ja, das kostet jeden Monat Geld. Einer kompletter Sebst- und Neubau wird m.E. aber die teuerste Variante von allen werden.

                Du musst selber wissen, was Du tun möchtest. Just my 2 cents…

                1. 3-4 Monate sind komplett utopisch, sorry.

                  Utopisch kurz oder zu lang? Ich geb mir lieber mehr zeit als nötig

                  Sollte Dich der Rat eines alten Hasen interessieren: Du verkaufst also bereits erfolgreich Dinge via eBay und Amazon, ja? Dann konzentriere Dich auf Dein Verkaufstalent und investiere Deine Zeit da rein.

                  Den Rat eines alten Hasen (bin selber Ü40) nehm ich immer gern an. Nur leider verkaufe ich nicht erfolgreich auf Ebay/Amazon wobei Amazon nur eine weitere Option wäre die ich aktuell noch nicht nutze.

                  Wenn Du einen eigenen Shop willst, dann kaufe / miete Dir einen Fertigen. Kaufen und selber warten ist auch so eine Sache. Nachdem, was ich bislang rauslese, würde ich Dir zu einer auf fremdem Hoster gewarteten Mietlösung wie z.B. Shopify raten.

                  Sei mir bitte nicht bös aber ich hätte gern was eigenes ohne großartig vortlaufende kosten oder zich zusatzregistrierungen. Ich hatte bei Strato ein Shop-Baukasten und nur weil ich wegen vieler Gründe nicht pünktlich mit der Zahlung nachkam wurde kurzerhand der Shop gelöscht. Auch der aktuell Finanzielle Grund ist ausschlaggebend warum ich was eigenes bauen möchte für nur 7,99 im Monat. Habe das Pech gehabt das alle Anträge usw. für meine Selbstständigkeit erst durch waren als der erste Lockdown kam und somit stehe ich nun mit runter gelassener Hose da und muß schaun wie ich vorwärts komme mit nur knapp 350€ im Monat.

                  Und bevor nun der Spruch kommt geh doch normal arbeiten ich würde gern kann & darf nicht wegen Gesundheitlichen Gründen.

                  1. Hallo,

                    3-4 Monate sind komplett utopisch, sorry.

                    Utopisch kurz oder zu lang? Ich geb mir lieber mehr zeit als nötig

                    utopisch kurz - jedenfalls für einen Einzelkämpfer. Schon allein für den Entwurf würde ich mindestens einen Monat ansetzen - und dann ist noch keine einzige Zeile Code geschrieben.

                    Wenn der Entwurf mal steht, geht das reine Coding vielleicht flott, aber wenn du damit durch bist, sind deine geschätzten 3-4 Monate bestimmt schon rum.

                    Und dann heißt es: Testen, testen, testen, debuggen, debuggen. Das dauert. Das braucht erfahrungsgemäß den mit Abstand größten Batzen Zeit des ganzen Projekts. Und du solltest außerdem einen Partner haben, der sich um die Rechtschreibung kümmert.

                    Sei mir bitte nicht bös aber ich hätte gern was eigenes ohne großartig vortlaufende kosten oder zich zusatzregistrierungen. Ich hatte bei Strato ein Shop-Baukasten und nur weil ich wegen vieler Gründe nicht pünktlich mit der Zahlung nachkam wurde kurzerhand der Shop gelöscht.

                    Ich kenne sowas. 😟
                    Aus ähnlichen Gründen ist mir vor einigen Jahren mal mein Internet-Zugang gekappt worden. Ohne Vorwarnung, ohne förmliche Information. Als zum ersten Mal die Lastschrift für die Monatsrechnung geplatzt ist, hieß es beim freundlichen Support noch, das sei nicht tragisch, man würde den offenen Betrag eben mit der nächsten Monatsrechnung zusätzlich mit abbuchen. War auch so. Als dasselbe ein paar Monate später nochmal passierte, haben sie den DSL-Zugang kommentarlos abgedreht.

                    Auch der aktuell Finanzielle Grund ist ausschlaggebend warum ich was eigenes bauen möchte für nur 7,99 im Monat. Habe das Pech gehabt das alle Anträge usw. für meine Selbstständigkeit erst durch waren als der erste Lockdown kam

                    Anträge?? Für mich war das ein einziger Gang zum Rathaus, Gewerbeantrag ausgefüllt, vom Beamten abzeichnen und abstempeln lassen, fertig. Das unterschriebene Antragsformular galt gleichzeitig als Gewerbeschein.

                    und somit stehe ich nun mit runter gelassener Hose da und muß schaun wie ich vorwärts komme mit nur knapp 350€ im Monat.

                    Uff. Kann man davon überhaupt leben?

                    Make the most of your time
                     Martin

                    --
                    Es gibt Tage, da gelingt dir einfach alles. Aber keine Sorge, das geht schnell vorbei.
                    1. utopisch kurz - jedenfalls für einen Einzelkämpfer. Schon allein für den Entwurf würde ich mindestens einen Monat ansetzen - und dann ist noch keine einzige Zeile Code geschrieben.

                      Wenn der Entwurf mal steht, geht das reine Coding vielleicht flott, aber wenn du damit durch bist, sind deine geschätzten 3-4 Monate bestimmt schon rum.

                      Und dann heißt es: Testen, testen, testen, debuggen, debuggen. Das dauert. Das braucht erfahrungsgemäß den mit Abstand größten Batzen Zeit des ganzen Projekts. Und du solltest außerdem einen Partner haben, der sich um die Rechtschreibung kümmert.

                      Für die Rechtschreibung hab ich schon jemand der immer wieder drüberschaut und mir auf die Finger kloppt. 😉

                      Auch der aktuell Finanzielle Grund ist ausschlaggebend warum ich was eigenes bauen möchte für nur 7,99 im Monat. Habe das Pech gehabt das alle Anträge usw. für meine Selbstständigkeit erst durch waren als der erste Lockdown kam

                      Anträge?? Für mich war das ein einziger Gang zum Rathaus, Gewerbeantrag ausgefüllt, vom Beamten abzeichnen und abstempeln lassen, fertig. Das unterschriebene Antragsformular galt gleichzeitig als Gewerbeschein.

                      Ja Anträge und noch vieles mehr. War ne scheiß Situation. Arbeitsausfall wegen Bandscheibe. OP nicht möglich da bereits der Nervenstrang angegriffen wurde und das nicht operabel ist. Dann in der Reha die Arbeit wegen zu langem Ausfalls verloren 1/2 Jahr später auch die Wohnung verloren da es ja eine Betriebswohnung ist und ich kein Mitarbeiter mehr war. Arbeitsamt riet mir dann dazu mein Hobby zum Beruf zu machen. Was aber mit vielen Anträgen und besuchen beim Steuerberater zusammenhing wegen beglaubigtem Businesplan fürs AA. und als das dann alles entlich in trocknen Tüchern war stand ich mitten in Corona und konnte meine Selbstständigkeit wegen fehlender Ware auf Eis setzen das war März 2020 da wurde mir nix geliefert wegen Corona und Corona-Hilfe vom Staat stand mir nicht zu da ich kein Einkommen VOR Corona hatte. Und seit dem bekomm ich ALG2 früher Harz4 genannt. Wegen dem Schaden am Nervenstrank dank Bandscheibe kann und darf ich keine tätigkeiten mehr machen womit ich mehr verdienen könnte als das aktuelle ALG2 wodurch ich somit auf die Selbstständigkeit angewiesen bin. Achja und da ich keine neue Wohnung auf die schnelle fand weil hatte ja keine Arbeit nachzuweisen hatte ich dann 8/2020 die Räumungsklage und stand für knapp 1 Std. auf der Strasse. Fand durch zufall auf die schnelle eine neue bleibe mein jetziges Zuhause 1Z. DG-Wohnung (vorher waren es 79m² 3Z.)

                      und somit stehe ich nun mit runter gelassener Hose da und muß schaun wie ich vorwärts komme mit nur knapp 350€ im Monat.

                      Uff. Kann man davon überhaupt leben?

                      Naja man schlägt sich so durch ... sind ja eigentlich knapp 900 aber 500 Miete und 50 Rüchzahlung ans Amt für vorgestreckter Mietkaution gehen halt noch ab ... als single geht es irgendwie mit nur 350 rum zu kommen.

                      1. Hallo,

                        Achja und da ich keine neue Wohnung auf die schnelle fand weil hatte ja keine Arbeit nachzuweisen hatte ich dann 8/2020 die Räumungsklage und stand für knapp 1 Std. auf der Strasse. Fand durch zufall auf die schnelle eine neue bleibe mein jetziges Zuhause 1Z. DG-Wohnung (vorher waren es 79m² 3Z.)

                        kommt mir irgendwie bekannt vor. Nur dass ich gut 3 Monate gebraucht habe, um wieder eine Wohnung zu finden. In der Zwischenzeit habe ich wieder bei meinen Eltern in meinem ehemaligen Kinderzimmer Unterchlupf gefunden. Die Eckdaten alte/neue Wohnung sind fast exakt die gleichen wie bei dir. 😀

                        knapp 350€ im Monat.

                        Uff. Kann man davon überhaupt leben?

                        Naja man schlägt sich so durch ... sind ja eigentlich knapp 900 aber 500 Miete und 50 Rüchzahlung ans Amt für vorgestreckter Mietkaution gehen halt noch ab

                        Ach so, ich hatte schon befürchtet, es wäre 350EU$ Geamt-Nettoeinkommen.

                        ... als single geht es irgendwie mit nur 350 rum zu kommen.

                        Also 350 nach Abzug der monatlichen Fixkosten wie Miete, Strom, Internet und so. Ja, das geht. Aber dann kann man sich tatsächlich keine großen Sprünge leisten.

                        Make the most of your time
                         Martin

                        --
                        Es gibt Tage, da gelingt dir einfach alles. Aber keine Sorge, das geht schnell vorbei.
                        1. Naja mich hat halt nicht nur das Leben sondern auch gleich Corona ordentlich gef.... na ihr wisst schon 😉 Aber wie sag ich so gern. Rückschläge machen mich nur schlauer und härter. Mit einem guten eigenwillen ist so manches schaffbar und so sehe ich es auch mit dem selbercoden vom Shop

                          1. Mit einem guten eigenwillen ist so manches schaffbar

                            Gute Einstellung!

                            und so sehe ich es auch mit dem selbercoden vom Shop

                            Davon möchte ich Dir aus tiefstem Herzen weiter abraten!

      2. Hallo,

        PHP 8 kann ich leider nicht nutzen da bei meinem Servrhost nur PHP7 läuft.

        Das ist m.E. ein Grund den Hoster zu wechseln. Imho ist es für Hoster quasi Pflicht PHP 8 anzubieten: PHP 7 wird nur noch rund ein Jahr unterstützt. Hier ist das aber nicht so relevant ob du PHP 7 oder 8 verwendest, die angesprochenen Problem sind von der genauen Version unabhängig.

        Das Verrückte ist ja das keine Fehler angezeigt werden und auch auf der Seite keinerlei abbrüche stattfinden es wird einfach nur nix angezeigt.

        Wie geschrieben: vermutlich ist die Ausgabe von Fehlermeldungen deaktiviert und wenn das Script einen fatalen Fehler wirft, wird das Script ohne Ausgabe abgebrochen. Die Ausgabe von Fehlermeldungen solltest du in der Entwicklungsumgebung (auf der Produktionsumgebung dann nicht mehr!) immer einschalten.

        Dann muß mein Shop halt noch nen Monat länger warten 😉

        Und wenn der zusätzliche Monat nicht reicht, gilt die Rekursion 😉

        Gruß
        Tobias

        1. Das ist m.E. ein Grund den Hoster zu wechseln. Imho ist es für Hoster quasi Pflicht PHP 8 anzubieten: PHP 7 wird nur noch rund ein Jahr unterstützt. Hier ist das aber nicht so relevant ob du PHP 7 oder 8 verwendest, die angesprochenen Problem sind von der genauen Version unabhängig.

          Ich habe erst vor paar Tagen den Vertrag geschloßen mit Manitu und dort hieß es das erstmal nur PHP7 unterstützt wird. Da wußte ich ja auch nicht welche Version die aktuellste ist. Mein Fehler mich nicht vorher schlau gemacht zu haben.

          Oh, Wärend ich dies hier geschrieben habe habe ich kurz nachgeschaut und ich lag im Irrtum. Habe soeben auf PHP8 umgeschaltet. Danke das dies hier nochmal erwähnt wurde.

      3. Tach!

        Das Verrückte ist ja das keine Fehler angezeigt werden und auch auf der Seite keinerlei abbrüche stattfinden es wird einfach nur nix angezeigt.

        Und das ist auch gut so. Der Host beim Provider ist eine Produktivumgebung, und eine solche soll so eingestellt sein, dass nicht aus Versehen unnötige Interna preisgegeben werden. PHP ist dann so eingestellt, dass Fehlermeldungen nicht in die Ausgabe geschrieben werden. Man entwickelt Software üblicherweise in einer Entwicklungsumgebung zu Hause, bei der alle Fehlermeldungen angezeigt werden oder in einem ständig kontrolliertem Log landen.

        dedlfix.

  5. Hast du in der DB Oberfläche ausprobiert was bei der Abfrage passiert und was sie als Ergebnis bringt?
    Dann weißt du ob du in PHP oder in der Abfrage weitersuchen musst.

    Ok die Query ist sehr simpel, aber auch da könnte irgendwas anders heißen als du angegeben hast, oder es gibt einfach keine Daten mit dieser ID, oder vielleicht ist die ID eine Zahl und es ist schon problematisch dass du den Einser in ' ' gesetzt hast.

    1. Den einser in '' habe ich aus einen meiner Alten Codes übernommen... aber wie gesagt da sich doch recht viel geändert hat fange ich nochmal ganz von vorne an Schritt für schritt ... erstmal laufen lernen bevor ich gleich losrenne.

      Edit: Es hat sich ja nicht nur viel geändert sondern einiges ist ja auch vom Code her kürzer und besser geworden. Auch damit muß ich mich erstmal vertraut machen.

    2. Hast du in der DB Oberfläche ausprobiert was bei der Abfrage passiert und was sie als Ergebnis bringt?
      Dann weißt du ob du in PHP oder in der Abfrage weitersuchen musst.

      Ok die Query ist sehr simpel, aber auch da könnte irgendwas anders heißen als du angegeben hast, oder es gibt einfach keine Daten mit dieser ID, oder vielleicht ist die ID eine Zahl und es ist schon problematisch dass du den Einser in ' ' gesetzt hast.

      habe soeben nochmal den Test gemacht und es mal in der DB-Oberfläche eingegeben und siehe da es werden exakt die Daten ausgegeben die ich haben wollte. Somit kann es nicht an den '' gelegen haben oder vertipper bei einem Wort.

      1. Gut die Query stimmt also.
        Nächster Schritt: Was steht in $result?
        Wird ohne while ein Eintrag ausgegeben? Vielleicht passt die Syntax da ja nicht und es kommt zwar ein fetch-array Eintrag zurück aber while reagiert nicht drauf? (hab php nicht mehr so drauf)

        Geh das doch Schritt für Schritt an.
        Für den Anfang nur "SELECT 'abc' as name". Dann passe php so an dass da was ausgegeben wird.
        Dann einen richtigen Eintrag aus der Tabelle wählen und auf "name" zugreifen.
        Als nächstes die Schleife angehen.

        1. Gut die Query stimmt also.
          Nächster Schritt: Was steht in $result?
          Wird ohne while ein Eintrag ausgegeben? Vielleicht passt die Syntax da ja nicht und es kommt zwar ein fetch-array Eintrag zurück aber while reagiert nicht drauf? (hab php nicht mehr so drauf)

          Hallo, ich glaube bei mir hapert es schon bei dem Query befehl. Ich nutze keine Programme wie Xamp, Apache oder wie se alle heißen mögen sondern ich teste es immer gleich online, denn die Besucher haben all die Programme ja auch nicht.

          Verbindung zur DB funzt aber sobald ich eine queryabfrage an die DB schicke bricht meine Seite ab. Mit abbrechen meine ich das darunter nix mehr kommt selbst der Footer wird nicht includet

          <?php
          $dbhost='server';
          	$dblogin='name';
          	$dbpwd='passwort';
          	$dbname='datenbank';
          	
          	$db = new mysqli($dbhost,$dblogin,$dbpwd,$dbname);
          
          $sql = "SELECT * FROM kategorie";
          
          $ergebnis = $db->query($sql);
          
          ?>
          

          Mehr Quelltext brauch ich hier nicht schreiben da ab der Zeile mit der query alles abbricht. Die frage ist nur Warum? Ich habe es so geschrieben wie auf jeder PHP-Seite oder YT-Video auch gemacht wird.

          Ich gebs auf für heute ... hab die Schnauze echt voll ... selbst abschreiben ergibt bei mir keine Erfolge. Erstmal 1 Tag frei machen und den Kopf frei bekommen!

          1. Da brat mir doch einer nen Storch, schön knusprig!

            Tasse Kaffee gemacht und eine komplett eigene Testseite erstellt mit allem pipapo und nun klappt es.

            Kann es sein das der Fehler daran lag das ich im Header die DBverbindung includet hatte und den rest in einer anderen php schrieb welche dann unter den header includet wurde?

            ich habe praktisch alles was vorher auf 3 PHP's verteilt war in eine einzige gepackt

            Header

            <?php
            $dbhost='xxx';
            $dblogin='xxx';
            $dbpwd='xxx';
            $dbname='xxx';
            	
            $db = new mysqli($dbhost,$dblogin,$dbpwd,$dbname);
            ?>
            

            Main

            <?php
            echo 'Ich bin die TestSeite<p/>';
            
            $sql = "SELECT * FROM kategorie";
            $ergebnis = $db->query($sql);
            
            while($row = $ergebnis->fetch_assoc()){
            	echo $row['name'] . "<br>";
            }
            	
            echo 'Ende der Testseite, jetzt noch eine kleine Prüfung ob die Verbindung zur Datenbank steht<p/>';
            ?>
            

            footer

            <?php
            if($db->connect_error){ die('verbindung fehlgeschlagen: ' . $db->connect_error); }else{ echo'Verbindung Steht!'; }
            
            $db->close();
            ?>
            

            jetzt wo alles in einer einzigen PHP steckt klappt es aufeinmal

            1. Ich habe gerade noch ein paar test durchgeführt und dabei bemerkt das ich die Angaben für Host, Benutzername, Passwort, Datenbankname nicht auscluden (nennt man das überhaupt so) darf ... denn sobald ich dies tu funktioniert nix mehr ansonstens passt alles wunderbar.

              1. Hallo,

                Ich habe gerade noch ein paar test durchgeführt und dabei bemerkt das ich die Angaben für Host, Benutzername, Passwort, Datenbankname nicht auscluden (nennt man das überhaupt so) darf ... denn sobald ich dies tu funktioniert nix mehr ansonstens passt alles wunderbar.

                Doch, die Daten darf man schon auslagern – was bei dir aber schief läuft lässt sich so nicht sagen, dafür müsstest du zeigen wie die Dateien zusammenspielen. Der Code im Posting von 13:26 gibt das nicht her, das sind nur drei einzelne Dateien wo nicht erkennbar ist wann welche geladen wird.

                Zwei Tipps/Hinweise noch: lass das ?> in den PHP-Dateien weg (sofern dann nicht HTML o.ä. kommt), damit riskierst du weniger potentielle Probleme mit evtl. anschließend noch folgenden Leerzeichen. Zudem: verwende nie SELECT * sondern gib immer die benötigten Spalten an.

                Gruß
                Tobias

              2. OMG ... wie gefährlich doch ein LEERZEICHEN sein kann. Ich habe soeben den Fehler gefunden! Ich hatte in der dblogin.php anstelle von <?php wie es sich gehört, habe ich stattdessen <? php geschrieben und drumm war alles für die Katz.

                1. Dennoch ein liebes großes DANKE an alle die sich beteiligt haben. Somit war es wenigstens ein unterhaltsamer Vormittag. Und sorry wenn ich nicht alle Vorschläge annehme wie z.B.: mieten eines Baukastens. Wie gesagt wegen Probleme der letzten 2 Jahre muß ich irgendwie schauen wieder auf die Beine zu kommen und möchte es gern selber versuchen da ich den Server eh schon habe und ihn auch noch für andere Dinge brauche sind sowieso die 7,99€ weg und da kann ichs ja auch mal selber versuchen hinzubekommen. Da bin ich sehr ergeizig.

                2. OMG ... wie gefährlich doch ein LEERZEICHEN sein kann. Ich habe soeben den Fehler gefunden! Ich hatte in der dblogin.php anstelle von <?php wie es sich gehört, habe ich stattdessen <? php geschrieben und drumm war alles für die Katz.

                  Spricht vielleicht doch dafür, den Editor zu wechseln. Mit VS Code kann man zum Beispiel auch super mit HTML und PHP arbeiten und derartige Syntaxfehler werden sofort erkannt.

                  1. Hallo,

                    Den VSC hab ich versucht jedoch bin ich ein wenig zu dumm um die PHP-funktionen zu instalieren. Habs versucht aber nicht hinbekommen, drum habe ich zurück gegriffen auf Notepad++ Weiß garnicht ob es das schon vor 16 Jahren gab da hab ich alles im einfachen Texteditor gecoded. Aber nach langer suche ist es mir ja doch aufgefallen wo der Fehler lag. Wie sagt man so schön, aus Fehlern lernt man 😉

                    LG Cryptic Sven

                    --
                    Was du heute kannst besorgen, das schaffste auch noch morgen!
              3. Hallo Cryptic,

                Variablen, die Du in einem include-file auf globaler Ebene erzeugst, sind für andere PHP-Dateien ebenfalls sichtbar. Daran kann es nicht liegen.

                Es ist ja auch ok, wenn Du die Festlegung von User, Passwort, Server und DB zusammen mit dem new mysqli() beisammen hast. Die Variable $db sollte dann für Folgecode sichtbar sein.

                Übrigens: Brav gemacht, gleich auf die OOP-Schnittstelle umgestiegen 👏👏👏

                Einen Tipp zur Codegestaltung: Wenn Du reine PHP Files hast, die mit PHP enden und keinen HTML-Teil am Ende haben, dann lass das ?> am Ende weg. Das ist eine allgemeine PHP Codierempfehlung. Du siehst nämlich nicht, ob da vielleicht noch ein Space oder ein Zeilenumbruch hinter ist; aber wenn, dann includest Du ihn mit und er landet im Browser.

                Man erkennt aus deinen Postings jetzt nicht, wer was wie includet. Möglicherweise liegt es daran.

                Du könntest für's Debugging auch zu Beginn ein

                ini_set("display_errors", "1");
                error_reporting(E_ALL);
                

                setzen. Damit sollten Fehlermeldungen im Browserfenster erscheinen, wenn was faul ist. Für den weiteren Betrieb solltest Du Dich damit befassen, wie und wohin dein PHP Errors loggt. Dazu sind die PHP.INI Optionen log_errors und error_log interessant, die kannst Du mit der ini_get Funktion abrufen, oder mit einem Einzeiler-Script

                <?php php_info();
                

                Edit: Danke, Sven - ich hatte da zuerst nur <? stehen statt <?php 😫

                Achtung, dieses Script keinesfalls dauerhaft auf einem Server liegen lassen, es offenbart einem Hacker zu viel über dein System.

                Rolf

                --
                sumpsi - posui - obstruxi
                1. Übrigens: Brav gemacht, gleich auf die OOP-Schnittstelle umgestiegen 👏👏👏

                  Was hab ich angestellt? Das war bestimmt schon vorher so 😉 Nee spaß, was meinst du mit OOP-Schnittstelle?

                  Das mit der Fehlermeldungs.ini merk ich mir und schau mal wie das gemacht wird. Kann das Script dann ja immer wenn ich mit meiner arbeit aktuell fertig bin runterlöschen.

                  Edit:und das <?php ?> weglassen scheint ja keine gute idee zu sein ... hatte ja nur ein Leerzeichen dazwischen und schon ging nix mehr und gerade kurz getestet ohne und schon standen allles aus der dblogin.php online sichtbar ... ne lieber mache ich sie zusätzlich hin als das wieder fehler aufkommen. Zuviel <?php ?> kann scheinbar nicht schaden XD

                  1. Tach!

                    Edit:und das <?php ?> weglassen scheint ja keine gute idee zu sein [...] ne lieber mache ich sie zusätzlich hin als das wieder fehler aufkommen. Zuviel <?php ?> kann scheinbar nicht schaden XD

                    Die Fehler kommen unbemerkt, wenn du zu viel ?> verwendest. Es geht lediglich darum, das abschließende ?> am Ende einer Datei wegzulassen. Da die Datei dort zu Ende ist, ist logischerweise auch der PHP-Teil zu Ende. Alles andere - vor allem das einleitende <?php - muss bleiben.

                    Das ?> am Dateiende ist zum Beispiel dann problematisch, wenn dahinter noch unsichtbare Zeichen stehen (Leerzeichen etc.) und man anfängt mit Sessions zu arbeiten. Dafür werden zusätzliche HTTP-Header gesetzt, was dann icht mehr möglich ist, weil wegen solcher Leerzeichen, die als Ausgabe zählen, die Header nicht mehr gesendet werden können.

                    dedlfix.

                2. <?php php_info();
                  

                  diese eine Zeile reicht aus damit mir fehler im Browser angezeigt werden?

                  das mit dem ini_set hab ich nicht ganz verstanden. Wohin muß das gesetzt werden und darf es dann bleiben oder muß ich das später wieder aus dem code nehmen wegen Haker-Angrifsfläche?

                  1. Hallo,

                    <?php php_info();
                    

                    diese eine Zeile reicht aus damit mir fehler im Browser angezeigt werden?

                    nein, dieser eine Aufruf gibt dir eine lange Liste aller PHP-Einstellungen aus. Angefangen bei der PHP-Version und dem Server-API (Apache-Modul oder CGI) über Voreinstellungen deines Webhosters bis hin zu den Dingen, die du selbst beeinflusen kannst.

                    Daraus sollte zum Beispiel auch hervorgehen, wohin PHP seine Fehlermeldungen loggt.

                    das mit dem ini_set hab ich nicht ganz verstanden. Wohin muß das gesetzt werden und darf es dann bleiben oder muß ich das später wieder aus dem code nehmen wegen Haker-Angrifsfläche?

                    Das kommt an den Anfang deiner Scripte, solange sie noch in der Entwicklungs- und Testphase sind. In der produktiven Phase sollte das aber wieder raus, weil auch Fehlermeldungen manchmal Informationen enthalten, die für Angriffe nützlich sind. Zum Beispiel die genauen Server-Pfade bestimmter Dateien.

                    Make the most of your time
                     Martin

                    --
                    Es gibt Tage, da gelingt dir einfach alles. Aber keine Sorge, das geht schnell vorbei.
                3. Tach!

                  Übrigens: Brav gemacht, gleich auf die OOP-Schnittstelle umgestiegen 👏👏👏

                  Am besten gleich jetzt von mysqli zu PDO wechseln, das ist deutlich benutzerfreundlicher. Besonders wenn man es satt hat, für alle Werte einzeln die richtige Maskierungsmethode aufzurufen, und auf Prepared Statements umsteigt, bekommt man eine einfachere Programmierung ohne umständlich Variablen binden zu müssen.

                  dedlfix.

    3. Tach!

      Ok die Query ist sehr simpel, aber auch da könnte irgendwas anders heißen als du angegeben hast, oder es gibt einfach keine Daten mit dieser ID, oder vielleicht ist die ID eine Zahl und es ist schon problematisch dass du den Einser in ' ' gesetzt hast.

      Wenn die Spalte ein numerischer Typ ist, konvertiert MySQL den Wert in eine Zahl. Oder zumindest, soweit der Wert als Zahl interpretiert werden kann. Man kann beispielsweise nach '1x' fragen und bekommt auch den Datensatz mit der ID 1. Problematisch ist das also nicht, lediglich unsauber.

      dedlfix.

      1. PHP: Was du programmiert hast sieht komisch aus. Aber ich werde einen 💩 tun dir das zu sagen, ich mach einfach irgendwas draus. Selber schuld wenn alles schief läuft! Wenn du es überhaupt merkst darfst du wenigstens lange nach dem Fehler suchen, hähä!

        MySQL: oh, toller Ansatz. So will ich das auch machen!

        Im Ernst, was soll dieser Unsinn? Wenn ich als Zahl '1x' angebe, will ich dann dass nur nach 1 gesucht wird, oder will ich dann gesagt bekommen dass ich hier was falsch gemacht habe?
        Was ist der Zweck dieser Willkür, hat das einen tieferen Sinn?

        1. Hallo,

          Im Ernst, was soll dieser Unsinn? Wenn ich als Zahl '1x' angebe, will ich dann dass nur nach 1 gesucht wird, oder will ich dann gesagt bekommen dass ich hier was falsch gemacht habe?
          Was ist der Zweck dieser Willkür, hat das einen tieferen Sinn?

          das nennt man wohl Fehlertoleranz, und das ist ja im Prinzip nicht schlecht.

          Nur gebe ich dir insofern recht, dass ich dann trotz aller Fehlertoleranz wahlweise gern einen "Developer Mode" haben möchte, in dem alles kritisiert wird, was nicht einwandfrei ist.

          May the Schwartz be with you
           Martin

          --
          Wie kommen bloß die Schilder auf den Rasen, auf denen steht "Betreten des Rasens verboten"?
          1. Ich würde es lieber Schlamperei nennen. Welcher Programmierer hat wirklich was davon wenn solche Fehler toleriert werden? Keiner der was relevantes programmiert, sprich der mehr macht als "hey mein erstes PHP Programm, es passiert immerhin was".

            Stellen wir uns ein selbstfahrendes Auto mit so einem Mechanismus vor. Ein Baum im Jahr... liegt noch in der Toleranz.
            Bitte nicht!

            1. Hallo encoder,

              dass es unsauber ist, a.k.a. geschlampt, hat Dedlfix ja schon festgestellt.

              Dass MYSQL eine DB ist, die Schlamperei fördert, wissen alle PHP Programmierer und fühlen sich wohl dabei, weil PHP das gleiche tut oder zumindest getan hat.

              Aber ändern können wir das nicht. Die PHP Sprachpflege arbeitet an behutsamen Säuberungen, und jede zerbricht ein kleines bisschen Altkotcode. Das geht nicht mit der Brechstange…

              Rolf

              --
              sumpsi - posui - obstruxi
            2. Hallo,

              Ich würde es lieber Schlamperei nennen. Welcher Programmierer hat wirklich was davon wenn solche Fehler toleriert werden?

              Moment, hier sollten wir's genau nehmen. Fehlertoleranz gegenüber schlampigem Programmcode mag ich auch nicht, im Gegenteil. Ein typisches Beispiel dafür, dass gut gemeint nicht unbedingt gut gemacht ist, fällt mir immer wieder auf, wenn jemand die Anführunszeichen beim Key für ein PHP-Array vergessen hat. PHP rät in so einem Fall: Wenn eine gleichnamige Konstante nicht existiert, wird der Programmierer wohl einen String gemeint haben, und korrigiert das entsprechend. Je nach Error Reporting stillschweigend (nicht gut) oder mit einer Notice.

              Aber ich meinte Fehlertoleranz gegenüber Benutzereingaben, die nicht 100% regelkonform sind. Ja, die Daten in einer SQL-Query muss man meines Erachtens als Benutzereingaben in diesem Sinn sehen - jedenfalls aus der Sicht des DBMS.

              Stellen wir uns ein selbstfahrendes Auto mit so einem Mechanismus vor. Ein Baum im Jahr... liegt noch in der Toleranz.

              Der Vergleich hinkt. Betrachten wir lieber Fahrerassistenzsysteme, wie sie heute in vielen Autos schon serienmäßig drin sind: Fahrer wird unaufmerksam, döst vor sich hin und zieht, ohne es zu merken, bei 110km/h das Steuer nach rechts zum Straßenrand (fehlerhafte Benutzereingabe). Der Spurhalteassistent bemerkt die unplausiblen Parameter und hält dagegen, zieht das Steuer wieder etwas nach links und hält so das Auto auf der Straße (Fehlerkorrektur). Das alles nach Möglichkeit kombiniert mit einem akustischen oder haptischen Feedback an den Fahrer, damit der wieder wach wird (Fehlermeldung). So ist es doch in Ordnung.

              May the Schwartz be with you
               Martin

              --
              Wie kommen bloß die Schilder auf den Rasen, auf denen steht "Betreten des Rasens verboten"?
              1. Hallo Martin,

                wenn jemand die Anführunszeichen beim Key für ein PHP-Array vergessen hat

                das ist eine der Schlampereien, wo ZEND graduell aufräumt.

                PHP bis 7.1: Notice
                PHP 7.2-7.4: Warning
                PHP 8.0: Fatal Error

                Rolf

                --
                sumpsi - posui - obstruxi
              2. Hallo Martin,

                bei 110km/h das Steuer nach rechts zum Straßenrand (fehlerhafte Benutzereingabe). Der Spurhalteassistent bemerkt die unplausiblen Parameter und hält dagegen

                Und das ist ein typisches Beispiel für eine unbrauchbare Assistenz, d.h. der hinkende Vergleich hat auch noch einen Platten am Rollator.

                Was ist mit besagtem Baum (oder Auffahrunfall des Vordermanns), der ein abruptes, im Normalfall unplausibles Verhalten erzwingt? Wenn ich in dem Moment noch gegen einen Spurhalteassistenten ankämpfen muss, kann das den Unterschied zwischen Leben und Tod ausmachen. D.h. ein solcher Spurhalteassistent darf nicht nur auf Spuren achten, sondern muss auch noch zwischen Spurwechsel wegen Dösigkeit und Spurwechsel bei Alarm unterscheiden können.

                Ich will der Autokonvertierung von '1x' nach (int)1 nicht das Wort reden. Beim Programmieren geht es um keine Sekundenbruchteile, die über Leben und Tod entscheiden (beim Programmieren. Die Programmausführung ist was anderes). Beim Programmieren darf ich gerne in jeder Codezeile über die Daten, die ich da verarbeiten will, nachdenken. Automatisches Type Juggling ist gefährlich. PHP erkennt das mittlerweile, für '123x' gibt's in PHP 7 noch eine Notice und in PHP 8 schon eine Warnung.

                Rolf

                --
                sumpsi - posui - obstruxi
                1. Hallo,

                  bei 110km/h das Steuer nach rechts zum Straßenrand (fehlerhafte Benutzereingabe). Der Spurhalteassistent bemerkt die unplausiblen Parameter und hält dagegen

                  Und das ist ein typisches Beispiel für eine unbrauchbare Assistenz, d.h. der hinkende Vergleich hat auch noch einen Platten am Rollator.

                  Was ist mit besagtem Baum (oder Auffahrunfall des Vordermanns), der ein abruptes, im Normalfall unplausibles Verhalten erzwingt? Wenn ich in dem Moment noch gegen einen Spurhalteassistenten ankämpfen muss, kann das den Unterschied zwischen Leben und Tod ausmachen.

                  der Einwand ist bekannt, ein Stück weit berechtigt, und ein typisches Argument derer, die gegen solche Assistenzsysteme sind. Ich bin da auch immer hin- und hergerissen, denn bei jedem noch so ausgereiften und ausgeklügelten System kann man Situationen finden, in denen das System eher schadet als nützt.

                  Sogar beim ABS, was heute allgemein akzeptiert und geschätzt wird, gibt es Situationen, in denen es kontraproduktiv ist - nämlich auf lockerem Untergrund wie Schnee, Kies oder Sand. Auf derartigem Untergrund würde ein blockierendes Rad nämlich einen Keil lockeren Materials vor sich schieben und das Fahrzeug dadurch schnell zum Stehen bringen, während der Bremsweg mit ABS in so einer Situation deutlich länger wird (deswegen kann man bei manchen Geländewagen oder SUVs das ABS abschalten).
                  Ein abschaltbares ABS hätte ich mir aus genau diesem Grund vor einigen Jahren gewünscht, als mein Auto unhaltbar im Schritttempo und mit kurrendem ABS die verschneite Rampe zur Tiefgarage runterrollte und ich gehofft habe, dass das Tor noch rechtzeitig aufgeht.

                  D.h. ein solcher Spurhalteassistent darf nicht nur auf Spuren achten, sondern muss auch noch zwischen Spurwechsel wegen Dösigkeit und Spurwechsel bei Alarm unterscheiden können.

                  Na klar. Mir war bewusst, dass auch mein Gegenbeispiel nicht bi ins Detail ausgereift war.

                  für '123x' gibt's in PHP 7 noch eine Notice und in PHP 8 schon eine Warnung.

                  Find' ich gut - aber hier ging es ja, wenn ich das richtig verfolgt habe, um ein entsprechendes Verhalten von mySQL. Also gleiche Krankheit, anderer Patient.

                  May the Schwartz be with you
                   Martin

                  --
                  Wie kommen bloß die Schilder auf den Rasen, auf denen steht "Betreten des Rasens verboten"?
              3. Ja, die Daten in einer SQL-Query muss man meines Erachtens als Benutzereingaben in diesem Sinn sehen - jedenfalls aus der Sicht des DBMS.

                Mag sein dass einige Queries mit Benutzereingaben arbeiten, vielleicht Suchanfragen sind die man tolerant haben möchte. Mehr oder weniger[1].
                Aber deswegen dem DBMS diese Toleranz schon von Anfang an und für alle Queries einpflanzen? Diese Idee disqualifiziert es in meinen Augen für Anwendungen in denen es nicht nur um "so ungefähr" geht sondern um "genau dieses".


                1. Was gäbe ich manchmal nur, wenn die Artikelsuchen in Webshops nur exakt nach dem Suchbegriff suchen könnten! Etwa Bezeichnungen elektronischer Bauteile, oder Typnummern und ähnliches.
                  Ich denke da an einen Technikversender (nein nicht der mit C beginnt), dessen Artikelsuche meinem Empfinden nach nur aus SELECT * ORDER BY RANDOM besteht. Man kriegt hunderte Artikel, die meisten davon haben mit dem Suchbegriff überhaupt nichts mehr zu tun. ↩︎