Deel 1 is misschien vrij eenvoudig:'a''b'
is een alternatief voor 'a\'b'
en betekent dus hetzelfde. De gebruikersinterface weet zeker dat in query's de juiste tekenreeks wordt geretourneerd, in tegenstelling tot de tabeldefinitie.
Voor deel 2 heeft Nedret Recep u het juiste antwoord gegeven. Bovendien vraag ik me af hoe
echo "<option value='".$imgClass_row[imgClass]."'>"
kan ooit resulteren in
<option value="Robin" s'="">
. Ik verwacht liever
<option value='Robin's'="">
wat duidelijk fout is, maar kan worden opgelost met htmlspecialchars()
.
EDIT:Ik heb een mogelijke verklaring gevonden:de HTML-parser van de browser zou hier de schuld kunnen zijn. Met
<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>
Ik krijg met Firefox
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin's
met optie a
en
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin
met optie b
. Maar het is na het ontleden en opnieuw samenstellen en is duidelijk niet de door PHP gegenereerde code. En zelfs dan, waar is en axcess '
in <option value="Robin" s'="">
.