ritengo che Kribbio74 si riferisse al meccanismo dei "segnaposto".
l'uso esatto è il seguente:
codice:
use DBI();
$dbh = DBI->connect("DBI:mysql:database=$nomeDB;host=$host","$utente","$password");
$sth = $dbh->prepare("SELECT * FROM dati WHERE CodStaz = ?");
# da notare senza ''
$sth->execute("cio_che_devi_cercare");
DBI sostituirà a ? il parametro passato al metodo execute per cui in realtà la query effettiva sarà:
$sth = $dbh->prepare("SELECT * FROM dati WHERE CodStaz = 'cio_che_devi_cercare'");
questo meccanismo è utile quando si devono fare ricerche usando la stessa quesry ma parametri diversi (aumentano le prestazioni), ad esempio:
codice:
use DBI();
$dbh = DBI->connect("DBI:mysql:database=$nomeDB;host=$host","$utente","$password");
$sth = $dbh->prepare("SELECT * FROM dati WHERE CodStaz > ? AND CodStaz < ?");
for ($i = 0; $i <= $qualcosa; $i++) {
$sth->execute($i, $i + 10);
.... valuti i risultati
}
$sth->finish();
un altro caso in cui è utile questo meccanismo è quando devi fare richerche con stringhe che potrebbero contenere caratteri pericolosi, ad esempio:
$sth = $dbh->prepare("SELECT * FROM dati WHERE CodStaz = ?");
# da notare senza ''
$sth->execute("O'Really");
# notare la '