php / mysql: Как вставить строку gzcompress-ed в текстовое поле mysql? - PullRequest
5 голосов
/ 15 декабря 2011

Я пытался сжать и сохранить строку в кодировке json в mysql, но я получаю "неожиданные /" ошибки.

Я также пытался использовать аддлэш, как это:

addslashes(gzcompress(json_encode($mystring)));

И для отображения

json_decode(gzuncompress(stripslashes($mystring)));

Но при вставке происходит сбой с упомянутой мной ошибкой.

Я где-то читал, что строка с gzcompress должна храниться как большой двоичный объект, но я надеялся, что тамэто способ сохранить его в текстовом поле mysql, поэтому мне не нужно связываться с БД.

PS: Некоторые просили полное сообщение об ошибке здесь:

Предупреждение:Неожиданный символ на входе: состояние '\' (ASCII = 92) = 1

PDOException: SQLSTATE [HY000]: общая ошибка: 1366 Неверное строковое значение: '\ x9C \ xED} \ x8Br \ xDB ...'для столбца' field_text_value 'в строке 1.

Ответы [ 2 ]

11 голосов
/ 15 декабря 2011

Сохранить как BLOB.Даже если бы был способ сохранить его в поле VARCHAR или *TEXT таким образом, чтобы он выжил при передаче туда и обратно, это было бы ужасно.

Вы уверены, что вам все равно нужно сжатие?

Вы также можете заставить MYSQL выполнять сжатие, например INSERT INTO mytable (compressed_json) VALUE (COMPRESS('[\"the json\"]').

0 голосов
/ 15 декабря 2011

Почему вы хотите добавить сжатую строку gzip в базу данных?Почему бы вам просто не сохранить его как:

mysql_real_escape_string(json_encode($myArray)))

...