Zitat von hellbringer
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
substr() Verschachtelung mit strpos() und strrpos() ?
Einklappen
Neue Werbung 2019
Einklappen
X
-
-
Zitat von psoido Beitrag anzeigenAlso wer es genau wissen will: Ich hatte mir bereits die Mühe gemacht alle strpos() und strrpos() durch eigene Funktionen auzutauschen, die bei einem false ein 0 liefern.
Kommentar
-
Zitat von hellbringer Beitrag anzeigenSowas fände ich hochgradig verwirrend.
Kommentar
-
Zitat von psoido Beitrag anzeigenAlso wer es genau wissen will: Ich hatte mir bereits die Mühe gemacht alle strpos() und strrpos() durch eigene Funktionen auzutauschen, die bei einem false ein 0 liefern.The string "()()" is not palindrom but the String "())(" is.
Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
PHP.de Wissenssammlung | Kein Support per PN
Kommentar
-
Zitat von psoido Beitrag anzeigenZudem kann ich das beliebig nach meinen Vorstellungen anpassen.
Kommentar
-
Zitat von psoido Beitrag anzeigenLeute, denkt doch mal mit! substr() tut schon jetzt das Gleiche als wenn ein Wert als false = 0 wäre!
Kommentar
-
Hier jetzt ein Nachtrag. Vielleicht hilft es dem ein oder anderen mal irgendwann.
Dieses substr() mit strpos() oder strrpos() hat mich jetzt doch noch ins Boxhorn gejagt, nach der Umstellung von mysqli auf PDO Prepared Statements, indem ich etwas übersehen hatte, nach dem Motto, wenn es funktioniert, wird es schon richtig sein, betreffend eine einzige (Seite) Stelle, Schwachstelle. mysqli akzeptiert auch ein false als Wert, bzw. verwertet das als "" leeren String, was in meinem Fall insoweit korrekt war. PDO Prepared Statements streikt bei einem Wert mit false und breakt das Script. Das bedeutet wohl, dass PDO Prepared Statements Werte mit booleans als solche verwertet und nicht in leere Strings oder sonstwas umwandelt. Für was das unter Umständen gut sein soll, weiß ich im Moment nicht. DBs können mit booleans wenig anfangen.
Kommentar
-
Zitat von psoido Beitrag anzeigenDBs können mit booleans wenig anfangen.
Kommentar
-
OK, ich korrigiere, weil nicht "", sondern ''.
mysqli:
$value = false;
"SELECT * FROM table WHERE column='" . $value . "'";
Was passiert?
hellbringer, du schaffst es nicht. Lass es einfach sein.
Kommentar
-
Zitat von psoido Beitrag anzeigenhellbringer, du schaffst es nicht. Lass es einfach sein.
Kommentar
-
Zitat von psoido Beitrag anzeigenCode:$value = false; "SELECT * FROM table WHERE column='" . $value . "'";
Code:SELECT * FROM table WHERE column='false';
Code:SELECT * FROM table WHERE column=false;
Hier zB auch ein Test im fiddle. http://sqlfiddle.com/#!9/5f9ab/5
Die erste Abfrage im fiddle findet alle, die zweite - so wie bei dir oben - nichts.
LGThe string "()()" is not palindrom but the String "())(" is.
Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
PHP.de Wissenssammlung | Kein Support per PN
Kommentar
-
Zitat von hausl Beitrag anzeigenMan muss es halt auch richtig machen.
Code:SELECT * FROM table WHERE column='false';
PHP-Code:$value = false;
"SELECT * FROM table WHERE column='" . $value . "'";
PHP-Code:SELECT * FROM table WHERE column='';
psoido versuch nicht irgendwelche Eigenheiten von PHP auszunutzen. Du schießt dir damit nur in den eigenen Fuß. Das was PHP einfach macht, macht gleichzeitig auch schwer. PHP verfolgt/verfolgte lange das Konzept "Hauptsache es funktioniert irgendwie". Für soldien Code ist das absolutes gift.
So ein quatsch wie "substr('sfsfsd', false);" ist völlig Kontraproduktiv. Die Annahme von PHP "False? Da ist bestimmt 0 mit gemeint." ist völliger Bullshit! Bei sowas muss ein harter Fehler kommen, der unbehandelt zum Abbruch führt. Das ist in meinen Augen zu 100% ein Zeichen für ein Bug im Code.
- 2 Likes
Kommentar
Kommentar