Teil 1 könnte ganz einfach sein:'a''b'
ist eine Alternative für 'a\'b'
und bedeutet damit dasselbe. UI bin mir sicher, dass bei Abfragen der richtige String zurückgegeben wird, im Gegensatz zur Tabellendefinition.
Für Teil 2 hat Nedret Recep Ihnen die richtige Antwort gegeben. Außerdem frage ich mich, wie
echo "<option value='".$imgClass_row[imgClass]."'>"
jemals zu
führen könnte<option value="Robin" s'="">
. Ich würde eher erwarten
<option value='Robin's'="">
was eindeutig falsch ist, aber mit htmlspecialchars()
gelöst werden kann .
EDIT:Ich habe eine mögliche Erklärung gefunden:Hier könnte der HTML-Parser des Browsers schuld sein. Mit
<select id="s" onchange="alert(document.getElementById('s').innerHTML + ' value:' + document.getElementById('s').value)">
<option value='Robin's'>a</option>
<option value='Robin's'>b</option>
</select>
bekomme ich mit Firefox
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin's
mit Option a
und
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin
mit Option b
. Aber es ist nach dem Parsen und erneuten Zusammensetzen und ist eindeutig nicht der von PHP generierte Code. Und selbst dann, wo ist en axcess '
in <option value="Robin" s'="">
.