簡體   English   中英

在 mySQL 中插入帶有特殊字符的 JSON 編碼值失敗

[英]Inserting in mySQL a JSON encoded value with special chars fails

我正在嘗試使用 PDO 執行此查詢:

UPDATE categories
SET keywords = '{"bg":["keyword1","\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 "]}'
WHERE id = 4;

問題是它似乎記錄了沒有反斜杠(“\\”)的十六進制值。 它確實在我的應用程序和 PHPMyAdmin 中沒有反斜杠顯示。

我在這個查詢上使用了 exec(),我已經用這個全文查詢試過了,沒有任何動態/轉換的變量。 PDO參數如下:

PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"

有人可以解釋我這里發生了什么嗎? 謝謝!

更新:我已經從 mysql 的 CLI 執行了這個確切的查詢,然后在那里顯示它,問題是一樣的:所有的反斜杠都消失了。 因此,問題似乎與 PDO 無關,而是與 MySQL 或我有關! 我的版本是5.1.53

\\字符在 SQL 中具有特殊含義。 使用綁定參數而不是將值硬編碼到用於查詢的基本字符串中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM