SQL Datensatz wird nicht angelegt!

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hi

Habe hier ein Problem.

Bei mir werden Datensaätze automatisiert in die DB angelegt, was auch wunderbar klappt. Heute aber habe ich ein Problem festgestellt und zwar...

Wenn ein Datensatz z.B. so ausschaut...

Markus Meyer
Hamburg

Wenn jetzt ein weiterer User angelegt werden soll (aus einer Textdatei) z.B.

Martin Klotz
Hamburg

Dann wird der Datensatz Martin Klotz nicht angelegt, stattdessen beim auslesen werden für Martin Klotz die Daten von Markus Meyer ausgegeben.


Das ganze sieht so aus:
PHP:
      mysql_query('SET NAMES utf8');
      $vname = mysql_real_escape_string($temp[0]);
      $vort = mysql_real_escape_string($temp[1]);
      $sql = mysql_query("SELECT * FROM `test00` WHERE `ort` = '".$vort."' AND `name` = '".vname."'");
 
     if(mysql_num_rows($sql) == 0) {
      mysql_query("INSERT INTO `test00` (`ort`, `name`) VALUES ('".$vort."', $vname."')");
      $vsatz["id"] = mysql_insert_id();
      $vsatz["value"] = '0';
     }
     else {
      $vsatz = mysql_fetch_assoc($sql);
...   
}

Was mache ich hier falsch? Martin Klotz wird nicht angelegt ausser ich ändere den Namen des Ortes.

ach so, die Tabelle sieht so aus:

PHP:
CREATE TABLE IF NOT EXISTS `test00` (
  `ort` varchar(75) NOT NULL,
   `id` int(11) NOT NULL auto_increment,
  `name` varchar(75) NOT NULL,
   PRIMARY KEY  (`id`),
  UNIQUE KEY `ort` (`ort`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=655 ;
Ergänzung ()

Ach Mist, der Unique Key, blind.
 
Zuletzt bearbeitet:
Dein Code :

PHP:
mysql_query('SET NAMES utf8');
      $vname = mysql_real_escape_string($temp[0]);
      $vort = mysql_real_escape_string($temp[1]);
      $sql = mysql_query("SELECT * FROM `test00` WHERE `ort` = '".$vort."' AND `name` = '".vname."'");
 
     if(mysql_num_rows($sql) == 0) {
      mysql_query("INSERT INTO `test00` (`ort`, `name`) VALUES ('".$vort."', $vname."')");
      $vsatz["id"] = mysql_insert_id();
      $vsatz["value"] = '0';
     }
     else {
      $vsatz = mysql_fetch_assoc($sql);
...
}



evtl. so :


PHP:
mysql_query(SET NAMES utf8);
      $vname = mysql_real_escape_string($temp[0]);
      $vort = mysql_real_escape_string($temp[1]);
      $sql = mysql_query(SELECT * FROM test00 WHERE ort = $vort AND name = vname);
 
     if(mysql_num_rows($sql) == 0) {
      mysql_query(INSERT INTO test00 (ort, name) VALUES ($vort, $vname));
      $vsatz[id] = mysql_insert_id();
      $vsatz[value] = 0;
     }
     else {
      $vsatz = mysql_fetch_assoc($sql);
...
}
 
Zuletzt bearbeitet:
NeNe das war schon ok, beim PasteCopy habe ich halt nur paar Zeichen zuviel gelöscht. Es liegt am UNIQUE Key, ich muss für den Namen und für den ORT einen Key anlegen. Sonst wird.. Willi aus Berlin nicht angelegt wenn schon Herbert aus Berlin existiert da ich nur auf Ort geprüft habe.
 
beim insert values fehlen anführungszeichen. deswegen wird der code hier im forum auch farblich falsch dargestellt.
 
Moin @ice .. :D
Das wissen wir, das meinte er ja auch. Das ist beim PasteCopy passiet. Problem hat sich aber er.....t ;)
 
Zurück
Oben