Ich versuche dynamisch eine INSERT-Anweisung basierend auf JSON-Schlüssel/Wert-Paaren zu erstellen, wobei der Schlüssel $ das Datenbankfeld des Datentyps string oder integer ist und $ value eine Ganzzahl oder eine Zeichenfolge ist. Ich hatte keine Probleme beim Einfügen von numerischen Zeichenfolgen in Postgres vor, aber es ist fehlgeschlagen.Typkonvertierung fehlgeschlagen, nachdem INSERT-Anweisung dynamisch erstellt wurde?
Beispiel:
$json = '{"stringField":"string","intString":"42"}';
$columns = $values = '';
foreach (json_decode($json, true) as $key => $value) {
if ($value != NULL) {
$columns .= $key . ', ';
$values .= "'" . $value . "', ";
}
}
$query = ('INSERT INTO table ('.rtrim($columns, ', ').') VALUES ('.trim($values, ', ').');');
Postgres akzeptieren beide '42' und' '42'' für ein numerisches Feld in einer 'INSERT' Aussage, so dass Sie nur die Zitate bedingungslos hinzufügen könnten. –
Diese Seite zieht es vor, Fragen und Antworten getrennt zu halten. Anstatt also eine Lösung in das Feld "Frage" einzufügen, werden Sie entweder auf das Häkchen "Akzeptieren" mit einer der Antworten klicken oder [Ihre eigene Frage beantworten und akzeptieren diese Antwort] (http://stackoverflow.com/help/self-answer). – IMSoP
@NickBarnes Sie sind richtig, weshalb ich so verwirrt war. Es stellte sich heraus, dass es sich um eine _float_ numerische Zeichenfolge handelte, die den Fehler verursachte. Lösung veröffentlicht unten. –