PostgreSQL: Gebruik de functie pg_query_params() om de query en de parameters naar de database te sturen.
MySQL: Gebruik ALTIJD!!!! de functie mysql_real_escape_string() om variabelen te beveiligen, er mag niet één variabele zonder beveiliging in een query terechtkomen.
Alternatief: Gebruik PDO en bindParam() om variabelen in de queries te zetten.
// maak een verbinding met de database en dan ergens in je code:
$query = "
SELECT
kolomnaam
FROM
tabelnaam
WHERE
id = ".mysql_real_escape_string($_GET['id']);
$result = mysql_query($query);
// etc
?>
Variabelen mogen dus NOOOOOOOIT zonder mysql_real_escape_string() in een query komen te staan. Doe je dat wel, dan zoek je problemen en moet je niet gaan klagen wanneer een klein ettertje jouw website heeft gehackt. Daar heb je zelf om gevraagd. Eigen schuld, dikke bult.
Ps. Zet magic_quotes uit, die rotzooi zorgt voor ellende. Zie de php-handleiding hoe je dat doet. Met versie 6 zal PHP deze ellende eruit slopen, ze hebben het licht gezien.
Variabelen mogen dus NOOOOOOOIT zonder mysql_real_escape_string() in een query komen te staan.
Er zijn natuurlijk gevallen waarin dat wel zou kunnen. Zoals wanneer je die variabelen vooraf controleert:
<?php
if(isset($_GET['id']) && ctype_digit($_GET['id']))
{
$sql = "
SELECT kolomnaam
FROM tabelnaam
WHERE id = ".$_GET['id'];
}
?>
Maar goed, uitzonderingen bevestigen de regel ;-)