[英]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.