Moin Yadgar,
Das ist so keine gute Idee, weil das eine astreine SQL-Injection-Lücke ist. Man braucht dein Script nur mit dem URL-Parameter
?edit=' or ''='
aufrufen und es wird einfach mal allesSELECT
iert. Du möchtest Escaping oder besser prepared statements verwenden!Nein, das möchte ich in diesem Fall nicht, denn: https://forum.selfhtml.org/self/2021/oct/14/php-bedingung-wird-nie-erfullt/1792511#m1792511
Mit spitzen Klammern machst du hier im Forum übrigens aus einer URL einen Link.
Ich habe dir dort geantwortet, warum du das trotzdem tun möchtest.
Das Stichwort möchte wohl ein
label
sein.Ja, das macht man heutzutage wohl so...
Es hat auch gewisse Vorteile, weil das label
nämlich auch klickbar ist. Bei einem Radiobutton oder eine Checkbox macht sich das richtig bemerkbar – oder wenn es ums Styling geht.
$zeile2[0]
wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von Cross Site Scripting.s. o.
$entry2
wird unbehandelt in den HTML-Kontext gesetzt. Damit besteht die Gefahr von Cross Site Scripting.s. o.
siehe „seitwärts“
Vermutlich ist der Vergleich eines Skalars mit einem Array
false
.Ist er, ich hatte nicht bedacht, dass fetch_array() auch im Falle eines einzigen Feldeintrags als Ergebnis dieses immer in doppelter Ausführung (mit numerischem und Label-Index) und damit natürlich als Array raushaut...
Es gibt laut Handbuch von fetch_array()
genau einen Fall, in dem kein Array zurückgegeben wird:
Return Values
Returns an array of values that corresponds to the fetched row or
null
if there are no more rows in result set.
Und mir ist bislang noch kein Fall untergekommen, in dem das PHP-Handbuch eine Funktion falsch beschrieben hätte.
Also korrigierte ich den Code:
… in Teilen …
<select name="stichwort"> <?php while ($zeile2 = $res2->fetch_array()) { echo $zeile2[0]."<br>"; if (!empty($_GET["edit"]) && $zeile2[0] == $entry1[0]) // jetzt mit Index! { echo "Bedingung erfüllt!<br>"; // Kontrollausgabe $zusatz = " selected"; } else { $zusatz =""; // auf Leerstring zurückgesetzt falls Bedingung unwahr } echo "<option".$zusatz.">".$zeile2[0]."</option>\n"; } ?> </select><br>
...und jetzt funktioniert es!
… bis …
Viele Grüße
Robert