mysql_real_escape_string()
et injections SQL
ont déjà été mentionnés.
Mais pour le moment, votre script doit (méticuleusement) mélanger l'instruction sql avec les données/paramètres et à l'étape suivante, le serveur MySQL doit séparer les données de l'instruction.
Utilisation (côté serveur) instructions préparées
les deux "parties" de votre requête sont envoyées séparément et l'analyseur sql (de votre serveur MySQL) ne peut jamais être "confus" quant à l'endroit où l'instruction se termine et où les données commencent.
Le php-mysql le module ne connaît pas les instructions préparées mais php-mysqli et AOP faire.
$pdo = new PDO('mysql:host=localhost;dbname=test', '...', '...');
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $pdo->prepare('
UPDATE
Videos
SET
Title=:title ,
Preacher=:preacher ,
Date=:date ,
Service=:service ,
File=:file ,
Description=:description
WHERE
id=:id
');
$stmt->bindParam(':title', $_POST['title']);
$stmt->bindParam(':preacher', $_POST['preacher']);
$stmt->bindParam(':date', $_POST['date']);
$stmt->bindParam(':service', $_POST['service']);
$stmt->bindParam(':file', $_POST['file']);
$stmt->bindParam(':description', $_POST['description']);
$stmt->bindParam(':id', $_GET['id']); // really _GET?
$stmt->execute();
Cela peut sembler beaucoup de ballonnement si vous utilisez $stmt pour une seule opération. Mais considérez que sinon vous devez appeler mysql_real_escape_string() pour chaque paramètre.