我試圖動態地創建一個基於JSON鍵/值對的INSERT語句,其中$ key是字符串或整型數據類型的數據庫字段,$ value是一個整數或字符串。我沒有問題插入到Postgres的數字字符串,但它是失敗的。動態構建INSERT語句後類型轉換失敗?
例子:
$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將同時接受'42'和''42''在一個'INSERT'聲明的數字字段,所以你可以只添加引號無條件。 –
本網站傾向於將問題和答案分開保存,因此我們建議您不要在「問題」字段中添加解決方案,而是點擊「接受」標記對其中一個答案,或者[回答您自己的問題並接受那個答案](http://stackoverflow.com/help/self-answer)。 – IMSoP
@NickBarnes你是對的,這就是我爲什麼如此困惑。原來這是一個導致錯誤的_float_數字字符串。解決方案發布如下 –