PHP и MySQL: хранить и распечатывать шестнадцатеричные символы - PullRequest
2 голосов
/ 10 сентября 2010

Я пытаюсь сохранить шестнадцатеричное значение (\ xC1) в базе данных MySql.Когда я печатаю это с помощью PHP, я получаю: xC1lcool вместо правильного слова.

INSERT INTO veiculos VALUES (1, «Ford», «Ka RoCam Flex», 25850.00, 1998, 1999, «Vermelho ', 15000,' \ xC1lcool; Gasolina; GNV ',' Ar-Condicionado; 4 порта; Câmbio automático ',' imagem1.jpg; imagem2.jpg; imagem3.jpg; imagem4.jpg; imagem5.jpg; '),(2, «Ford», «Ka RoCam Flex», 223850,00, 1999, 2001, «Prata», 10000, «\ xC1lcool; GNV», «Ar-Condicionado; 4 порта; Câmbio automático;», «imagem1.jpg;imagem2.jpg; imagem3.jpg; imagem4.jpg; imagem5.jpg; '), (3, «Ford», «Fiesta», 21380.00, 1998, 2002, «Preto», 23043, «Gasolina», «», «imagem1.jpg; imagem2.jpg; imagem3.jpg; imagem4.jpg; imagem5.jpg; ');

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 10 сентября 2010

\x не является допустимой escape-последовательностью. Допустимые последовательности приведены на http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

Цитирование руководства:

Для всех других escape-последовательностей, обратная косая черта игнорируется. Это экранированный символ интерпретируется как это не удалось избежать. Например, «\ x» это просто «х».

Вы можете указать полную строку в шестнадцатеричном формате:

SELECT 0x61626364 -- Prints abcd

Если вы хотите смешать оба стиля, вам нужно объединить:

SELECT CONCAT('a', 0x6263, 'd') -- Prints abcd
0 голосов
/ 10 сентября 2010

Вы можете хранить полные двоичные данные, такие как изображения или PDF в базе данных MySQL.Когда вы вводите значение, убедитесь, что вы делаете "insert ... values(".mysql_real_escape_string($value).")";.Рекомендуется использовать тип данных blob для этого столбца, но вы можете использовать varchar, если вы действительно этого хотите.После этого, когда вы выбираете данные, это будет нормально, вам больше ничего не нужно делать.В случае изображения просто используйте header(content-type: ...) и распечатайте переменную как обычно, и изображение будет отображено конечному пользователю.

0 голосов
/ 10 сентября 2010

Используйте функцию MySQL UNHEX() с CONCAT(). Как это

insert into tablename values (CONCAT(UNHEX('C1'), 'other-part-of-string'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...