mysql_real_escape_string()
och sql-injektioner
har redan nämnts.
Men just nu måste ditt skript (mösamt) blanda sql-satsen med data/parametrar och i nästa steg måste MySQL-servern separera data från satsen.
Använda (serversidan) förberedda uttalanden
båda "delarna" av din fråga skickas separat och sql-parsern (av din MySQL-server) kan aldrig bli "förvirrad" om var satsen slutar och data börjar.
php-mysql modulen känner inte till förberedda uttalanden men php-mysqli och PDO gör.
$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();
Kan tyckas vara mycket uppsvälld om du använder $stmt för bara en operation. Men tänk på att annars måste du anropa mysql_real_escape_string() för varje parameter.