Hallo zusammen,
derzeit probiere ich gerade Prepared Statements aus. Bei einer gewöhnlichen INSERT oder UPDATE Anweisung kann ich durch REPLACE ein Zeichen durch ein anderes ersetzen. In meinem Fall handelt es sich um ein HTML Eingabefeld (Beitragsfeld), in dem ein Beitrag mit Tausender- und Dezimaltrennzeichen eingegeben werden kann. MySQL lehnt ein Komma ab.
Im folgenden Thread wurde mir der Tip mit Replace gegeben.
https://www.datenbankforum.com/threads/in-insert-anweisung-zeichen-ersetzen.408/
Soweit so gut. Doch leider klappt das die Replace Anweisung bei den Prepared Statements nicht. Oder vielleicht mache ich was falsch. Hier der Code für den Button zum Übernehmen der eingetragenen Ziel auf der HTML-Seite.
Die innere Replace Funktion löscht beim eingetragenen Wert den Punkt, während die äußere das Komma durch den Punkt ersetzt. Somit ist der Wert SQL tauglich und korrekt gespeichert. Damit die Ausgabe wieder Punkt und Komma anzeigt habe ich über PHP das Ausgabefeld formatiert.
Aber die Nachkommastellen werden immer durch 0 ersetzt. Also aus 555,55 wird beim ersten Übernehmen 555,00. Was läuft falsch?
Gruß und Dank!
derzeit probiere ich gerade Prepared Statements aus. Bei einer gewöhnlichen INSERT oder UPDATE Anweisung kann ich durch REPLACE ein Zeichen durch ein anderes ersetzen. In meinem Fall handelt es sich um ein HTML Eingabefeld (Beitragsfeld), in dem ein Beitrag mit Tausender- und Dezimaltrennzeichen eingegeben werden kann. MySQL lehnt ein Komma ab.
Im folgenden Thread wurde mir der Tip mit Replace gegeben.
https://www.datenbankforum.com/threads/in-insert-anweisung-zeichen-ersetzen.408/
Soweit so gut. Doch leider klappt das die Replace Anweisung bei den Prepared Statements nicht. Oder vielleicht mache ich was falsch. Hier der Code für den Button zum Übernehmen der eingetragenen Ziel auf der HTML-Seite.
Code:
if($_POST['uebernehmen'])
{
$stmt=$mysqli->prepare($insertziele);
$stmt->bind_param("sdddddddddddddd",
$uid,
$_POST['ziel1'],
$_POST['ziel2'],
$_POST['ziel3'],
$_POST['ziel4'],
$_POST['ziel5'],
$_POST['ziel6'],
$_POST['ziel7'],
$_POST['ziel1'],
$_POST['ziel2'],
$_POST['ziel3'],
$_POST['ziel4'],
$_POST['ziel5'],
$_POST['ziel6'],
$_POST['ziel7']);
$stmt->execute();
}
Code:
$insertziele="INSERT INTO zielema (jahr, id_betreuer, ziel1, ziel2, ziel3, ziel4, ziel5, ziel6, ziel7) VALUES (2013,?,?,?,?,?,?,?,?)
ON DUPLICATE KEY UPDATE
ziel1= REPLACE(REPLACE(?, '.' , ''), ',' , '.'),
ziel2= ?,
ziel3= ?,
ziel4= ?,
ziel5= ?,
ziel6= ?,
ziel7= ?;";
Die innere Replace Funktion löscht beim eingetragenen Wert den Punkt, während die äußere das Komma durch den Punkt ersetzt. Somit ist der Wert SQL tauglich und korrekt gespeichert. Damit die Ausgabe wieder Punkt und Komma anzeigt habe ich über PHP das Ausgabefeld formatiert.
Aber die Nachkommastellen werden immer durch 0 ersetzt. Also aus 555,55 wird beim ersten Übernehmen 555,00. Was läuft falsch?
Gruß und Dank!