Code ist angeblich fehlerhaft, obwohl er richtig ist...

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
hallo Community,

ich musste mich gerade längere Zeit mit einem Problem rumschlagen wo eigentlich keines ist... Es geht um diese SQL Abfrage. Der Code an sich stimmt, aber irgendwie ist da ein Zeichen was ich auch selbst eingegeben habe, das aber falsch ist obwohl es mit dem richtigen identisch aussieht... Total komisch. Im Anhang mal beide Codes. Es ist jeweils in der unteren Teile nahe date('U'), kopiert man die Zeile und sucht mit Notepad++ danach, meint das Programm, diese Zeile nur 1x gefunden zu haben. bei dem oberen Code ist irgendetwas nicht sichtbares anders.

PHP:
Geht:

$statement = $pdo->PREPARE('UPDATE tabelle SET x=:x WHERE id=:id');
$statement->EXECUTE(array('x' => date('U'), 'id' => $id));



Geht nicht:

$statement = $pdo->PREPARE('UPDATE tabelle SET x=:x WHERE id=:id');
$statement->EXECUTE(array('x' => date('U')‬, 'id' => $id));

wie kann das sein ?? Zu testen bei: https://phpcodechecker.com/
 

Anhänge

  • problem.txt
    296 Bytes · Aufrufe: 332
:freak:

Edit: Ich beiß mir da grade echt die Zähne dran aus. Total komisch. Einzelne Elemente zu ersetzen macht es nicht besser, erst wenn ich alles ab EXECUTE neu schreibe... Sehr Eigenartig.

Sowas ist der Grund warum EDV für "Ende der Vernunft" steht!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: xep22 und f1nal
1587340608034.png
 
  • Gefällt mir
Reaktionen: Knossi, TechFA, acidarchangel und 3 andere
Schau Dir Deinen Code in einem vernuenftigen Editor an @xep22
Siehst Du dieses Zeichen dort beim Pfeil? Das ist zuviel.

1587340743914.png
 
  • Gefällt mir
Reaktionen: kuddlmuddl, Knossi, TechFA und eine weitere Person
Ah OK, interessant...aber wieso zeigt mir das nichtmal notepad++ an?
 
Weil Notepad++ das so nicht kann. Allerdings kannst Du danach suchen und ersetzen.
https://community.notepad-plus-plus...wn-3-digit-characters-with-black-background/3
Oder einen Font suchen der das Zeichen enthaelt und einbinden.
https://community.notepad-plus-plus.org/topic/15758/some-characters-are-not-displayed-unicode/6

Egal. Oeffne die Datei mal mit Notepad++ und geh mit dem Cursor an die Stelle mit dem Pfeil.
1587342337740.png

Also vor das Klammer zu. Dann bewege den den Cursor mit der Pfeiltaste nach rechts.
Du wirst 3 x druecken muessen bevor Du hinter das Komma kommst.
In dem Code der funktioniert benoetigst Du nur 2 x Druecken.

NPP merkt das da was ist, zeigt es aber nicht.
Ein anderer Editor aka EditPadPro zeigt an der Stelle eine " ".

1587342990930.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: xep22 und TechFA
Wahrscheinlich weil irgendwann mal in ISO gestartet und dann in UTF-8 konvertiert wurde und dabei ist das als gültige UTF-8-Sequenz rausgekommen. Wenn du es wiederum als ISO öffnest, siehst du dort die "zusätzlichen" Zeichen.
 
  • Gefällt mir
Reaktionen: TechFA
@Yuuri

Das geht auch in Notepad++, einfach "Encoding" auf "ANSI" umstellen und: voila
 
@wirelessy schon klar, aber Du brauchst keine Binärdarstellung, einfach UTF -> ANSI bei Encoding.
 
Obwohl es (leider) trotzdem funktioniert, schreib PREPARE und EXECUTE (und andere Methodennamen) bitte klein ;)
 
DoubleJ2k schrieb:
Obwohl es (leider) trotzdem funktioniert, schreib PREPARE und EXECUTE (und andere Methodennamen) bitte klein ;)

Sicher ?? Finde es überall großgeschrieben, selbst wenn ich es kleingeschrieben bei Pastebin hochlade und als PHP markiere macht es die Syntax groß...
 

Anhänge

  • 20200420-121014.png
    20200420-121014.png
    1,4 KB · Aufrufe: 285
  • 20200420-121043.png
    20200420-121043.png
    1,3 KB · Aufrufe: 279
xep22 schrieb:
https://www.php.net/manual/en/pdo.prepare.php

1587378565079.png


Funktionen werden so geschrieben, wie sie deklariert werden. PHP toleriert lediglich die Schreibweise, mehr nicht. In jeder anderen Sprache würdest du nen Fehler bekommen, da es dort einen Unterschied zwischen prepare, PREPARE und prEparE gibt.
xep22 schrieb:
Finde es überall großgeschrieben, selbst wenn ich es kleingeschrieben bei Pastebin hochlade und als PHP markiere macht es die Syntax groß...
Wenn es "alle" falsch machen, ist es nicht richtig.
 
  • Gefällt mir
Reaktionen: xep22
jetzt weiß ich auch woher dieses Zeichen kommt: vom Windows Taschenrechner.

macht mal eine Rechnung wo ein mindestens 4 stelliges Ergebnis raus kommt, dann Rechtsklick -> alles auswählen > kopieren. das in notepad++ eingefügt mit ANSI Kodierung kommt das raus:

Code:
?3.470?

mit UTF-8 sieht man die Fragezeichen nicht, es sind nicht sichtbare Zeichen, man merkt sie beim durchgehen mit den Pfeiltasten...

das ist doch nicht gewollt oder ??
 
@Evil E-Lex Dann hast du nicht alles kopiert. Schon immer, und immer noch hängt der Win10 Rechner diese Scheiße an den Anfang und das Ende. Das hat mir auch mal Kopfzerbrechen bereitet bis ich das herausgefunden habe.
1591651005050.png
 
coolmodi schrieb:
Dann hast du nicht alles kopiert.
Oh doch! Der Taschenrechner unterscheidet aber offensichtlich beim Kopieren zwischen einfacher Zahl und dem Ergebnis. Das ist natürlich grober Murks, erklärt aber die unterschiedlichen Resultate. Ich hatte in meinem Test das Ergebnis der Berechnung kopiert, du hingegen eine Zahl.

Edit: Markiert man die Zahl beim Ergebnis per Ctrl-A kommt tatsächlich kompletter Murks heraus. Der TE hat also recht.

Edit 2: Hier ist der Fix: https://github.com/microsoft/calculator/pull/1161
A fix went in recently and should be available in Calculator v10.2004.* or higher.
Mir ist allerdings nicht klar, wie ich an diese Version komme. Auf meiner Windows 10 2004 Installation ist der Rechner Version 10.1910.

Ergebnis:
ApplicationFrameHost_2020-06-09_10-04-50.png


Zahl:
notepad++_2020-06-09_10-08-03.png
 
Zuletzt bearbeitet:
Zurück
Oben