Datenbank Insert

puschelchen

Erfahrenes Mitglied
Hallo guten Morgen,
Ich hab in meinem Code einen Denkfehler +grummel+ :).
und zwar das Problem is die Zeile:
$query = "UPDATE $tbl SET 'DatumAktiv'= '$datum', 'DatumEndAktiv'='$DatumEndAktiv' WHERE Seriennummer='".$_GET['dpSrn']."'";

mein Code
PHP:
<html>
<body>
<form action="" method="GET">
<?php
error_reporting(E_ALL);
date_default_timezone_set("Europe/Berlin");
setlocale(LC_TIME,"");
if (isset($_GET) and count($_GET) != 0) {
$Host = "localhost";
$User = "david";
$password="a";
$dbname = "ABMC-Datenbank";
$tbl="Kunden";
$datum = date("Y.m.d");
mysql_connect('localhost', 'david', 'a') or die  ("Keine Verbindung möglich: ".mysql_error());
mysql_select_db($dbname) or die  ("Keine Verbindung möglich: ".mysql_error());
$sql  = "SELECT * FROM $tbl WHERE `Seriennummer`='".mysql_real_escape_string($_GET["dpSrn"])."'  ";
$data="";
$data=array();
if (!empty($_GET['Laufzeit']))        $data[] = "Laufzeit LIKE '%" .mysql_real_escape_string(@$_GET["Laufzeit"])."%'";
if (!empty($_GET['Seriennummer']))    $data[] = "Seriennummer LIKE '%" .mysql_real_escape_string($_GET["Seriennummer"])."%'";
if (!empty($_GET['DatumAktiv']))    $data[] = "DatumAktiv LIKE '%" .mysql_real_escape_string($_GET["DatumAktiv"])."%'";
if (!empty($_GET['DatumEndAktiv']))    $data[] = "DatumEndAktiv LIKE '%" .mysql_real_escape_string($_GET["DatumEndAktiv"])."%'";
if (!empty($_GET['PCLizenzen']))    $data[] = "PCLizenzen LIKE '%" .mysql_real_escape_string($_GET["PCLizenzen"])."%'";
if(count($data) > 0) $sql .= " WHERE " . implode(" AND ", $data);
$result = mysql_query($sql) or die(mysql_error());
$DatumEndAktiv=date('d.m.Y', mktime(0, 0, 0, date('m'), date('d') + $result["Laufzeit"], date('Y')));

if(mysql_num_rows($result)==0){

?>
<h1> Die Seriennummer ist nicht  vorhanden</h1>
<?php
}
else {
?>
    <table border="2" vertical-align="middle"  class="tablefont">

            <td style="padding:5px"><b>PCLizenzen</b></td>
            <td style="padding:5px"><b>DatumAktiv</b> </td>
            <td style="padding:5px"><b>DatumEndAktiv</b></td>


        </tr>
<?php
    while($row = mysql_fetch_assoc($result)) {
                                          $DatumEndAktiv=date('Y.m.d', mktime(0, 0, 0, date('m'), date('d') + $row['Laufzeit'], date('Y')))
?> <tr>

            <td style="padding:5px"><?php if (empty ($row['PCLizenzen'])) echo "0"; else echo $row['PCLizenzen'];?></td>
            <td style="padding:5px"><?php  echo $datum;?></td>
            <td style="padding:5px"><?php  echo $DatumEndAktiv;?></td>
</tr>
<?php
$query = "UPDATE $tbl SET 'DatumAktiv'= '$datum', 'DatumEndAktiv'='$DatumEndAktiv' WHERE Seriennummer='".$_GET['dpSrn']."'";
}
}
}
mysql_close();
?>
</form>
</body>
</html>
Die Datenbank wird nicht upgedatet sprich Datum bleibt leer ich hoff ihr könnt mir helfen
Danke schonmal
 
Spontane Vermutung:
Das Query wird nicht ausgeführt, weil kein [phpf]mysql_query[/phpf] benutzt wird.
 
Naja, der Query wird nirgends mit mysql_query($query) ausgeführt. Es ist ein String, mehr nicht. Den musst du natürlich noch mit der entsprechenden MySQL-Funktion ausführen.
 
$query ="UPDATE $tbl SET 'DatumAktiv'= '$datum', 'DatumEndAktiv'='$DatumEndAktiv' WHERE Seriennummer='".$_GET['dpSrn']."'";
mysql_query($query);

funktioniert leider nicht.
 
Was heisst, funktioniert nicht?
Du weisst doch inzwieschen wie man auf Fehlersuche geht. Oder sollen wir es nochmals mit dir durchgehen?
Der Fehler den du hast ist trivial. Also, versuch es doch mal. Ansonsten werden wir in Zukunft jedes deiner SQLs korrigieren müssen. Du willst also sicher lernen die Fehler selber zu finden.
PHP MySQL Debug Queries
 
$query ="UPDATE $tbl SET 'DatumAktiv'= '$datum', 'DatumEndAktiv'='$DatumEndAktiv' WHERE Seriennummer='".$_GET['dpSrn']."'";
$sql=mysql_query($query) or die ("Fehler in Abfrage ".$query.":<br/>".mysql_errno()." - ".mysql_error());

Fehlermeldung:
Fehler in Abfrage UPDATE Kunden SET 'DatumAktiv'= '2011.01.13', 'DatumEndAktiv'='2011.05.16' WHERE Seriennummer='NNNNN-2FS5I-3YTOJ-JRZ7F-4O8SC':
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''DatumAktiv'= '2011.01.13', 'DatumEndAktiv'='2011.05.16' WHERE Seriennummer='NNN' at line 1
 
Zuletzt bearbeitet:
Wenn du die Funktion von dem letzten Thread wieder heranziehst, kannst du rausfinden, warum.

Mach aus dem mysql_query() ein mysql_update(). Dann schau, ob der Query dem entspricht, was du erwartest.

Noch mal zu Erinnerung:

PHP:
function mysql_update($query)
{
  $r = true;
  if( mysql_query($query) == false )
  { 
    echo mysql_error();
    $r = false;
  }
  else if( mysql_affected_rows() == 0)
  {
    echo "Query hat keine Änderungen vorgenommen: <pre>$query</pre>";
    $r = false;
  }

  return $r;
}
 
mach mal vor dem update ein var_dump($datum)

und sag mal was er dir ausgibt.

und müssen bei den variablen nicht punkte sein?

also:
Code:
$query = "UPDATE $tbl SET DatumAktiv= '.$datum.', DatumEndAktiv='.$DatumEndAktiv.' WHERE Seriennummer='".$_GET['dpSrn']."'";

und bei den Spaltennamen die ' ' weg...
 
Zuletzt bearbeitet:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''DatumAktiv'= '2011.01.13', 'DatumEndAktiv'='2011.05.16' WHERE Seriennummer='NNN' at line 1

Entferne doch mal die Quotes bei den Spaltennamen im Query:

PHP:
$query ="UPDATE $tbl SET DatumAktiv='$datum', DatumEndAktiv='$DatumEndAktiv' WHERE Seriennummer='".$_GET['dpSrn']."'";
 
Zurück