? er en placeholder.
Med en placeholder kan du lave en "sql skabelon", hvor spørgsmålstegnene repræsenterer nogle værdier, der først angives senere i dit script, når SQL'en skal udføres.
Læs mere om placeholders på
http://perlmonks.thepen.com/7548.htmlDer er normalt 2 fordele ved placeholders.
1) Du kan genbruge dine SQL-statements når du bruger placeholders - typisk i et loop - hvor du opdaterer flere rækker med forskellige værdier. En database laver normalt en fortolkning af din sql til noget intern "maskin kode", som den så eksekverer. Med placeholders vil du kunne indsætte de værdier, der skal stå hvor der er "?" når den er blevet oversat, og dermed spare oversættelsen ved andet kald på samme SQL-statement.
2) Dine SQL-statements bliver sikrere idet man ikke længere kan lave SQL-injection attacks mod dig.
Se nærmere på
http://www.sitepoint.com/article/794