Hallo,
folgendes Szenario:
Ich lese Produktdaten aus einem XML-Produktkatalog aus, und fülle diese in eine MySQL-Tabelle. Alle Produkte haben insgesamt 6 verschiedene Preise, daher habe ich eine eigene Tabelle "Preise" erstellt, auf die jedes Produkt verweist. Bei jedem neuen Produkt, das ich auslese, prüfe ich erst ob der Preis des Produkts schon in der Tabelle "Preise" vorhanden ist. Falls dies der Fall ist, kriegt das Produkt als priceID die ID des Preises, falls nicht, wird erst ein neuer Preiseintrag erstellt, und mit mysql_insert_ind() die priceID des neu erstellten Preises dem Produkt zugeordnet. In der Tabelle Preise hat das Feld "price" den Datentypen float(4,2), also zwei Nachkommastellen.
Wenn nun im XML-Katalog ein Produkt mit dem Preis 0.90 auftaucht, wird erst geprüft ob die Tabelle "Preise" bereits einen solchen Eintrag enthält. Und genau hier ist mein Problem, denn auch wenn 0.90 bereits existiert, findet das PHP-Script keinen Eintrag, und füllt sozusagen einen zweiten Preis mit "0.90" ein.
Ich dachte erst, daß PHP intern aus der 0.90 eine 0.9 sodaß die Werte im Script und Datenbank nicht mehr die selben sind. Aber auch nach dem Ändern des Wertes in der DB wurde keine Üebreinstimmung der Werte festgestellt.
Sogar wenn ich in phpMyAdmin den direkten SQL-Befehl
"select * from prices where price = '0.90' bzw. '0.9'" eingebe, werden keine Übereinstimmungen gefunden....das ist doch wirklich sehr komisch.
Ich danke schon mal für jede Hilfe
Nachtrag:
Wenn ich den obigen SQL-Befehl mit 'concat' benutze scheint das einwandfrei zu funktionieren:
select * from prices where CONCAT(price) = '0.90'
Komisch, kann mir jemand das mal erläutern, und warum funktioniert nur bei Zahlen zwischen 0 und 1 ????????
folgendes Szenario:
Ich lese Produktdaten aus einem XML-Produktkatalog aus, und fülle diese in eine MySQL-Tabelle. Alle Produkte haben insgesamt 6 verschiedene Preise, daher habe ich eine eigene Tabelle "Preise" erstellt, auf die jedes Produkt verweist. Bei jedem neuen Produkt, das ich auslese, prüfe ich erst ob der Preis des Produkts schon in der Tabelle "Preise" vorhanden ist. Falls dies der Fall ist, kriegt das Produkt als priceID die ID des Preises, falls nicht, wird erst ein neuer Preiseintrag erstellt, und mit mysql_insert_ind() die priceID des neu erstellten Preises dem Produkt zugeordnet. In der Tabelle Preise hat das Feld "price" den Datentypen float(4,2), also zwei Nachkommastellen.
Wenn nun im XML-Katalog ein Produkt mit dem Preis 0.90 auftaucht, wird erst geprüft ob die Tabelle "Preise" bereits einen solchen Eintrag enthält. Und genau hier ist mein Problem, denn auch wenn 0.90 bereits existiert, findet das PHP-Script keinen Eintrag, und füllt sozusagen einen zweiten Preis mit "0.90" ein.
Ich dachte erst, daß PHP intern aus der 0.90 eine 0.9 sodaß die Werte im Script und Datenbank nicht mehr die selben sind. Aber auch nach dem Ändern des Wertes in der DB wurde keine Üebreinstimmung der Werte festgestellt.
Sogar wenn ich in phpMyAdmin den direkten SQL-Befehl
"select * from prices where price = '0.90' bzw. '0.9'" eingebe, werden keine Übereinstimmungen gefunden....das ist doch wirklich sehr komisch.
Ich danke schon mal für jede Hilfe
Nachtrag:
Wenn ich den obigen SQL-Befehl mit 'concat' benutze scheint das einwandfrei zu funktionieren:
select * from prices where CONCAT(price) = '0.90'
Komisch, kann mir jemand das mal erläutern, und warum funktioniert nur bei Zahlen zwischen 0 und 1 ????????
Kommentar