Gebruik BOB (PHP-gegevensobjecten) om verbinding te maken met uw MySQL-database. Deze methode zorgt ervoor dat alle database-invoer altijd wordt behandeld als tekenreeksen en dat u nooit handmatig hoeft te ontsnappen.
Dit gecombineerd met het juiste gebruik van html_entities() om gegevens van . weer te geven uw database is een solide en goede manier om uw pagina te beschermen tegen injectie. Ik gebruik altijd PDO om al mijn databaseverbindingen in mijn projecten af te handelen.
Databaseobject maken (en in dit geval een bepaalde tekencodering afdwingen):
try {
$db = new PDO("mysql:host=[hostname];dbname=[database]",'[username]','[password]');
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$db->exec('SET NAMES utf8');
} catch (PDOException $e) {
echo $e->getMessage();
}
Gebruik het dan als volgt:
$id = 1;
$q = $db->prepare('SELECT * FROM Table WHERE id = ?');
$q->execute(array($id));
$row = $q->fetch();
echo $row['Column_1'];
of
$q = $db->prepare('UPDATE Table SET Column_1 = ?, Column_2 = ? WHERE id = ?');
$q->execute(array('Value for Column_1','Value for Column_2',$id));
en met jokertekens:
$search = 'John';
$q = $db->prepare('SELECT * FROM Table WHERE Column_1 LIKE ?');
$q->execute(array('%'.$search.'%'));
$num = $q->rowCount();
if ($num > 0) {
while ($row = $q->fetch()) {
echo $row['Column_1'];
}
} else {
echo "No hits!";
}
Lees meer:
Hoe kan ik SQL-injectie in PHP voorkomen?
Wanneer *niet* bereide verklaringen gebruiken?
hoe veilig zijn BOB opgestelde verklaringen
http://php.net/manual/en/book.pdo.php