Ben olarak benim PHP sorguları yazma hasta var:
"WHERE '" . Database::escape($var) . "'";
Escape () fonksiyonu sadece () mysql_real_escape_string çağırır - ama onu sonra diğer veritabanları için destek uzatabilirsiniz var.
Sorguda tek tırnak dizeleri zorunda benim kod daha karmaşık hale edildi. Yani benim fikrim, bir sorgu için bir değişken 'hazırlamak' benim veritabanı sınıfının bir diğer işlevi oluşturmak için oldu:
static public function prepare($var)
{
if (is_object($var) || is_array($var) ) {
return " '" . Database::escape(serialize($var)) . "' ";
} else if (is_bool($var)) {
return ' ' . (int)$var . ' ';
} else if (is_int($var)) {
return ' ' . $var . ' ';
} else if (is_string($var) || is_float($var)) {
return " '" . Database::escape($var) . "' ";
} else {
throw new Exception('Unsupported variable type [' . gettype($var) . ']');
}
}
Şimdi burada parası ben bir sorguya geçmek hangi değişkenlerin hakkında endişelenmenize gerek yok olmasıdır. Ancak iki soru getiriyor:
- Ben düzgün, her değişken türünü ele muyum?
- Ne sebeple (eğer varsa) için ben bu yapmamalıyım?