mysql - забавные квадратные символы, добавленные к значению при вставке в таблицу - PullRequest
0 голосов
/ 13 мая 2010

У меня есть скрипт php, который вставляет значения в таблицу mySQL

INSERT INTO stories (title) VALUES('$_REQUEST[title]);

Я проверил значения переменных моего запроса перед входом в таблицу, и все в порядке.

Но когда я добавляю title = john к таблице, например,

Я получаю что-то вроде этого: title = "[][][][]john" и когда я извлекаю значение, это перевод строки, затем Джон.

У меня установлены столбцы utf-8, я также пробовал набор шведских символов.

Примечание: я не получаю эту ошибку при вставке значений из командной строки phpMyAdmin

Ответы [ 3 ]

0 голосов
/ 13 мая 2010

Вам нужно {} вокруг любой записи массива при использовании внутри "".

$q="INSERT INTO stories(title) VALUES('{$_REQUEST['title']}')";

Кстати, при проверке переменных $ _REQUEST было бы лучше сохранить очищенные версии в новых переменных и избежать их с помощью real_escape_string()

0 голосов
/ 13 мая 2010

Вам необходимо проверить набор символов базы данных, сервера и клиента.

Обратите внимание, что это не шведский набор символов, а шведский набор параметров.

0 голосов
/ 13 мая 2010

SET NAMES <encoding> запрос должен выполняться каждый раз, когда вы подключаетесь к базе данных.
очень простое правило.

где <encoding> - кодировка вашей HTML-страницы на диалекте mysql (utf8 для utf-8)

...