Mysql -> Probleme mit Update anweisung

Moin Moin,

Irgendwie komme ich nicht weiter. Ich habe eine Funktionierende Update Anweisung, die auch völlig Problemlos beim Update eines Datensatzes funktioniert:

PHP:
<?php
		// Variable definieren
			$tid = $_GET['id'];

		// DB Update für Abrechnung

			$sqlupdate = "UPDATE `fahrten` 
				SET 
					`abgerechnet`='X'
				WHERE 
					`id` = '$tid'";

			$update = mysql_query($sqlupdate);

?>
Wenn ich aber jetzt mehrere Dastensätze gleichzeitig aktualisiern will verwende ich folgenden Code:

PHP:
<?php
		// Variablen definieren
			$name = $_GET['name'];
			$vname = $_GET['vorname'];
			$ab = $_GET['ab'];
			$bis = $_GET['bis'];

		// DB Update für Abrechnung

			$sqlupdate = "UPDATE fahrten 
				SET 
					 abgerechnet ='X'
				WHERE 
					 name = $name AND vorname = $vname AND datum BETWEEN $ab AND $bis";

			$update = mysql_query($sqlupdate);
echo $name; echo $vname; echo $ab; echo $bis;
?>

Leider Funktioniert der code nicht. Kann mir jemand einen Tip geben
 
Leider Funktioniert der code nicht.
Was heisst das konkret? Was für eine Meldung erscheint, wenn du an den Query-Aufruf ein or die(mysql_error()) anhängst?

Übrigens solltest du zum Schutz gegen SQL-Injections unbedingt deine Daten vor dem Speichern in der Datenbank mit [phpf]mysql_real_escape_string[/phpf] maskieren.

Ausserdem bin ich der Meinung, dass du die in der DB zu speichernden Strings in Anführungszeichen setzen solltest, also z.B. so:

PHP:
$sqlupdate = "UPDATE fahrten 
                SET 
                     abgerechnet ='X'
                WHERE 
                     name = '$name' AND vorname = '$vname' AND datum BETWEEN '$ab' AND '$bis'";
 
Eventuell reicht es schon den datums Angaben mal ein paar Anführungszeichen zu schenken.

PHP:
$sqlupdate = "UPDATE fahrten 
                SET 
                     abgerechnet ='X'
                WHERE 
                     name = $name AND vorname = $vname AND datum BETWEEN '$ab' AND '$bis'";
 
Eventuell reicht es schon den datums Angaben mal ein paar Anführungszeichen zu schenken.

Nene, SilentWarrior hat schon recht. Name und vorname sind sicher Strings und gehören in ' '. Beim Datum kommt es drauf an, in welchem Format es gespeichert wird und in welchem Format es in den Variablen ist. Ggf muss da noch eine Datumsformatierung gemacht werden.
 
Zurück