So che diversi framework hanno questa funzionalità integrata in cui è possibile utilizzare i loro metodi speciali per creare query DB. So anche che questo è (parzialmente) per garantire che tutto sia gestito correttamente per evitare di rompere le cose. Quindi, ecco la domanda, se non si utilizza un framework, c'è un vantaggio sufficiente per usare una classe come quella piuttosto che digitare SQL a mano dove necessario? Considera il seguente codice.
/* What the method might look like and it's call */
$db->('little_bobby', array('foo' => 'bar', 'baz' => 1337));
public function insert($table, $values)
{
$cols = [];
$vals = [];
foreach ($values as $column => $value) {
$cols[] = $column;
$vals[] = $value;
}
$columns = implode(',', $cols);
$bind_labels = ':'.implode(',:', $cols);
$query = "INSERT INTO {$table} ({$columns}) VALUES ({$bind_labels})";
$stmt = $dbc->prepare($query); //$dbc is the connection object
foreach ($values as $column => $value) {
$stmt->bindValue(":$column", $value);
}
return $stmt->execute();
}
/* As opposed to what it would look like by hand */
$query = 'INSERT INTO little_bobby (foo, baz)
VALUES (:foo, :baz)';
$stmt = $dbc->prepare($query); //$dbc is the connection object
$stmt->bindValue(':foo', 'bar');
$stmt->bindValue(':baz', 1337);
$result = $stmt->execute();
Ignora qualsiasi errore sintattico a meno che non impedisca la comprensione di ciò che sto cercando di ottenere qui. Si noti che non sto chiedendo se si dovrebbe usare le classi per organizzare il codice, ma piuttosto se destinare una classe alla costruzione e all'esecuzione di query DB è meglio che scrivere una query a mano.