2014-12-13 71 views
1

我試圖更新mysql表並將json數組插入列(當前包含json數組)。使用JSON更新查詢失敗

這裏就是我試圖運行:當我使用INSERT

$array = ['key1' => 'val1', 'key2' => 'val2']; 
$array = json_encode($array); 
// ...some time later: 
$mysqli->query("UPDATE table_name SET colname={$array} WHERE somecol=someval"); 

這同一種結構的正常工作。任何想法爲什麼這不與UPDATE/SET

+1

你逃逸/引用的JSON值? (無論如何請閱讀準備好的語句,然後切換到PDO)。詢問$ mysqli->其他錯誤。 – mario 2014-12-13 02:06:17

回答

3

的SQL大概是搞砸當它到達數據庫。 而你使用它的方式打敗了使用mysqli的目的。

生成的查詢看起來像這樣:

UPDATE TABLE_NAME SET colname的= { 「KEY1」: 「VAL1」, 「KEY2」: 「val2的」} WHERE somecol = someval

由於缺少的單引號插入不起作用。

推薦的方式做到這一點低於:

注:

  • 使用PDO(推薦)或庫MySQLi它的方式是爲了使用。
  • 你必須做錯誤檢查和填充自己

例子:

$sql = 'UPDATE table_name SET colname=? WHERE somecol=someval'; 
$stmt = $mysqli->prepare($sql); 

$stmt->bind_param('s', $someValue); 
$stmt->execute(); 
+0

觸摸我很喜歡你的答案,所以我編輯了一下。我希望你不要介意 – meda 2014-12-13 02:36:05

+0

@meda Nah。複製編輯的東西是最好的。謝謝 – Touch 2014-12-13 02:37:58

+0

我簡化了爲了提出問題而採取的實際行動 - 我正在使用準備好的聲明;我遇到的問題是由於我處理將參數類型數組與參數值數組合並的方式。標明你的答案是正確的,因爲這涉及到一些有關我發佈的問題的人的重要筆記。偉大的迴應! – Ben 2014-12-13 03:39:34

-1

這colname的列,看看它是否就像如果一個字符串中使用這樣的:

$mysqli->query("UPDATE table_name SET colname='{$array}' WHERE somecol='someval'");