Magische Zahl bei Eintrag von Tabelle1 nach Tabelle2

julia29

Erfahrenes Mitglied
Hallo,

ich möchte einen 13stelligen Zahlenwert aus Tabelle1 in Tabelle2 eintragen.
Dieser Zahlenstring kommt in der gesamten Tabelle nur einmal vor.

In Tabelle2 wird nun aber immer ein 8stelliger Zahlenwert eingetragen und dieser Wert ist immer gleich (29064601).
Zur Kontrolle habe ich in der Tabelle1 statt dem 13stelligen Zahlenstring mal "abc" eingetragen.
Selbst hier erscheint in Tabelle2 wieder die magische Zahl 29064601.


PHP:
$order_id = 112;


$sql = "UPDATE `jos_vm_product`,`jos_vm_order_item` 
		SET `jos_vm_order_item`.`order_ean`=`jos_vm_product`.`ean` 
		WHERE `jos_vm_order_item`.`order_id`= '{$order_id}'";

$result = mysql_query($sql) OR die(mysql_error());

if($result == true)
   {
   echo "Die Einträge wurden erfolgreich uebertragen";
   }
   else
   {
   echo "Fehler beim Speichern";
   }
?>

Was kann das sein?
 
Hallo julia29,

ich würde jetzt auf die Schnelle sagen, dass Du erstmal einen SELECT in der Tabelle jos_vm_product für die ean machen solltest und dann:
PHP:
$ean = /* EAN aus SELECT */;
$sql = "UPDATE
            jos_vm_order_item
        SET
            order_ean = '$ean'
        WHERE
            order_id = '$order_id'";

Gruß
 
hier noch der gesamte Code

PHP:
<?php		// Ersetzen-Script
error_reporting(E_ALL);

    define('MYSQL_HOST',     'localhost');
    define('MYSQL_USER',     'webxxx');
    define('MYSQL_PASS',     'xxxx');
    define('MYSQL_DATABASE', 'usr_webxxx');

    if(!@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)) {
                die("Es konnte keine Verbindung aufgebaut werden"); // Script beenden
            }
            	echo "Verbindung wurde aufgebaut<br /><br />\n";
                if(!mysql_select_db(MYSQL_DATABASE)) {
                die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
            }
				echo "Die Datenbank wurde ausgew&auml;hlt<br /><br />";
$order_id = 112;


$sql = "UPDATE `jos_vm_product`,`jos_vm_order_item` 
        SET `jos_vm_order_item`.`order_ean`=`jos_vm_product`.`ean` 
        WHERE `jos_vm_order_item`.`order_id`= '{$order_id}'";

$result = mysql_query($sql) OR die(mysql_error());

if($result == true)
   {
   echo "Die Einträge wurden erfolgreich uebertragen";
   }
   else
   {
   echo "Fehler beim Speichern";
   }

Ich habe mir die Struktur aus einer fehlerfrei laufenden Anwendung kopiert und an diese Umgebung angepasst. Dort funktioniert es so, hier nicht.

Weiter oben habe ich ja if(!mysql_select_db(MYSQL_DATABASE)) {
 
Hallo julia29,

Ich habe mir die Struktur aus einer fehlerfrei laufenden Anwendung kopiert und an diese Umgebung angepasst. Dort funktioniert es so, hier nicht.
Das kann schon mal passieren...

Weiter oben habe ich ja if(!mysql_select_db(MYSQL_DATABASE)) {
Ist für den fehlerhaften UPDATE-Query nur leider völlig irrelevant.

Wie gesagt, ich würde es mit einem SELECT für die ean machen (vorher SELECT oder SUBSELECT ist egal):
PHP:
$sql = "UPDATE
            jos_vm_order_item
        SET
            order_ean = ( SELECT
                              ean
                          FROM
                              jos_vm_product
                          WHERE
                              item = '$item'
                          LIMIT 1 )
        WHERE
            order_id = '$order_id'";
Die WHERE-Klausel (item = '$item') im SUBSELECT muss natürlich angepasst werden.

Gruß
 
magische Zahl 29064601? ? ZahlenString? ? ?
Sieht aus wie ein etwas verplantes Datum?! Was für ein Datentyp hat die Spalte?

Ich habe mir die Struktur aus einer fehlerfrei laufenden Anwendung kopiert und an diese Umgebung angepasst. Dort funktioniert es so, hier nicht.
Prüfe doch mal die Versionen (php, mysql, php_mysql_ext)

PS: Der VirtueMart ist das schlechteste Shop-System das man für nichts hinterher geworfen bekommt. Wenn es noch nicht zu spät ist solltest du umsteigen.
 
Zuletzt bearbeitet:
Zurück