Del 1 kan vara ganska lätt:'a''b'
är ett alternativ till 'a\'b'
och betyder alltså detsamma. Användargränssnittet är säker på att i frågor kommer den korrekta strängen att returneras, i motsats till tabelldefinitionen.
För del 2 har Nedret Recep gett dig rätt svar. Dessutom undrar jag hur
echo "<option value='".$imgClass_row[imgClass]."'>"
någonsin kan resultera i
<option value="Robin" s'="">
. Jag skulle hellre förvänta mig
<option value='Robin's'="">
vilket är helt klart fel, men kan lösas med htmlspecialchars()
.
EDIT:Jag har hittat en möjlig förklaring:HTML-tolken av webbläsaren kan skyllas här. Med
<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>
Jag använder Firefox
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin's
med alternativet a
och
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin
med alternativet b
. Men det är efter analys och återmontering och är uppenbarligen inte den PHP-genererade koden. Och även då, var är en axcess '
i <option value="Robin" s'="">
.