konvertieren mysql-Ergebnis in json mit dem richtigen Typen

Weiß ich, wie man eine mysql-Zeile und wandelt Sie in eine json:

$row = mysqli_fetch_assoc(mysqli_query($db, "SELECT * FROM table WHERE id=1"));
echo json_encode($row); //it's an ajax-call

aber:

die db-Reihe verfügt über verschiedene Typen wie int, float, string.
durch Konvertierung mit Funktionen json_encode() alle Ergebnisse sind Streicher.

Gibt es eine bessere Art und Weise zu korrigieren, die Typen, als diese:

$row['floatvalue1'] = 0+$row['floatvalue1'];
$row['floatvalue2'] = 0+$row['floatvalue2'];
$row['intvalue1'] = 0+$row['intvalue1'];

Ich würde gerne eine Schleife über die Schlüssel, und fügen Sie 0, weil:

  • ersten coding-Regel: DRY - dont repeat yourself

aber ich kann nicht, weil:

  • Zeile hat, auch andere Datentypen als zahlen (string, date)
  • es gibt viele Spalten
  • design ist in der Entwicklung, so dass Spalten-Namen ändert sich oft

Vielen Dank im Voraus und entschuldigen Sie mein schlechtes Deutsch 🙂

BEARBEITEN (Antwort auf die Kommentar-Frage von Casimir et Hippolyte):

Nenne ich diesen php-code mit ajax dynamisch sql-Werte. in meinem javascript-code, den ich verwenden die Ergebnisse wie dieses:

result['intvalue1'] += 100;

können sagen, dass die json-Ergebnis intval1 50 ist, ist das berechnete Ergebnis:

"50100", nicht 150

  • Warum wollen Sie das tun?
  • in diesem Fall werfen Sie Ihre Werte in den javascript-code: parseInt, parseFloat.
  • gleiche problem in der javascript-code dann. außerdem habe ich eine Abfall-Verkehr durch das senden unnötiger "-chars.
  • Sie können mysqli_fetch_field() in einer Schleife, um Informationen über jede Spalte aus der Ergebnismenge und verwenden Sie es, um zu wissen, wenn Sie brauchen, um konvertieren Sie den Wert in eine Zahl oder halten Sie es als string. Aber ich denke, es ist einfacher, Sie zu konvertieren Sie den Wert int oder float (soweit erforderlich) in das javascript, bevor Sie es verwenden.
  • Durchlaufen Sie das Objekt, und konvertieren Sie entsprechend. Ich würde sscanf verwenden
  • unnecessary " :), es ist nichts! und das problem ist nicht die gleichen in javascript, denn javascript hat einen nativen Zugriff auf json-Objekten.
  • guter Punkt mit mysqli_fetch_field(). Es gibt VIELE Spalten in das Ergebnis-Zeile, mit verschiedenen Typen wie string, date, int, float, manuell konvertieren ist nicht die Lösung. bitte Lesen Sie meine Frage bis zum Ende 🙂

InformationsquelleAutor Marcel Ennix | 2015-02-01
Schreibe einen Kommentar