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.
 

Neue Beiträge

Zurück