Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не добавляются данные в таблицу


Автор: Dmi3ev 24.1.2009, 21:49
Не получается добавить записи. Добавляется только первая, тк там 111, а не всякая шняга.
Код

 if (@mysql_query("CREATE TABLE forMcrypt2(name TEXT, password TEXT);"))
    {
     echo "Таблица \"forMcrypt2\" создана!</br>";
     @mysql_unbuffered_query("INSERT INTO forMcrypt2 VALUES('Elena', '111')")or die(); //123
     @mysql_unbuffered_query("INSERT INTO forMcrypt2 VALUES('Pavel', '+Яa=ЏщЉ')")or die(); //456
     @mysql_unbuffered_query("INSERT INTO forMcrypt2 VALUES('Alexey','M`Lћv')")or die(); //789
    }

как изменить тип данных или еще чего, чтобы можно в базу было кидать что угодно?

Автор: enof 24.1.2009, 22:08
BINARY?

а не,бред говорю.

Автор: skyboy 24.1.2009, 23:00
Цитата(Dmi3ev @  24.1.2009,  20:49 Найти цитируемый пост)
как изменить тип данных

в какой кодировке создаются поля? если latin1, то вполне закономерно: вствка обламывается с сообщением типа "строка была обрезана" или что-то подобное.

Добавлено через 1 минуту и 7 секунд
в смысле, что для текстовых полей можно определить используемую кодировку(CHARACTER SET), а так как у тебя кодировка явно не задана, то для полей будет использоваться кодировка, указанная как кодировка по умолчанию для всей базы данных.

Автор: Dmi3ev 24.1.2009, 23:08
МОЖЕТ БЫТЬ МУСКУЛ НАСТРОЕН НЕВЕРНО, НО У МЕНЯ НЕ ПОЛУЧАЕТСЯ ЗАПИХНУТЬ В ТАБЛИЦУ ДАННЫЕ, КОТОРЫЕ НЕ ОБЫЧНЫЕ (НЕ БУКВЫ, НЕ ЦИФРЫ И НЕ ЗНАКИ)..., А ТАКИЕ КАК В ПРИМЕРЕ...

Добавлено через 42 секунды
Цитата

в какой кодировке создаются поля?

ДА ВРОДЕ В CP1251

Добавлено через 1 минуту и 16 секунд
Код

  if (@mysql_query("CREATE DATABASE Elenadb DEFAULT CHARACTER SET cp1251;")){
   echo "База данных Elenadb создана!</br>";}

вот так пишу в начале

Добавлено через 6 минут и 42 секунды
где рыть надо? в апаче может быть проблема? в мускуле? в пхп? где искать хоть...

Автор: Dmi3ev 24.1.2009, 23:33
хотя проблема немного глобальнее, не добавляется даже вот это
Код

mysql_unbuffered_query("INSERT INTO forMcrypt2 VALUES('Elena', 'яяяяяяяяя')")or die();

из-за яя..., что-то не так с кодировкой, подскажите, я начал только недавно.

Добавлено @ 23:33
через sql сomand line добавляется

Добавлено через 6 минут и 47 секунд
значит проблема не в мускуле, а в пхп, я так понимаю...

Автор: skyboy 25.1.2009, 00:14
Цитата(Dmi3ev @  24.1.2009,  22:33 Найти цитируемый пост)
sql сomand line

какая кодировка используется в консоли?
про SET NAMES слышал? надо перед первым запросом явно указать - в какой кодировке будешь присылать данные и забирать.
Цитата(Dmi3ev @  24.1.2009,  22:08 Найти цитируемый пост)
ДА ВРОДЕ В CP1251

замечание 1. символ 
Цитата



не из кодировки cp1251. точно.
замечание 2. у тебя CAPS ЗАПАЛ.

Автор: unicross 25.1.2009, 00:16
Код

mysql_query("SET NAMES cp1251");

Вставьте строку после подключения к базе данных.
Не забывайте также использовать функцию mysql_real_escape_string().

Если будете работать не под пользователем root, то все будет нормально и так...

Еще решение добавить
Код

skip-character-set-client-handshake

после строк 
Код

character-sets-dir="C:/Program Files/MySQL/MySQL Server 6.0/share/charsets"
init-connect="SET NAMES cp1251"

в секцию [mysqld] файла my.ini

Автор: Dmi3ev 25.1.2009, 00:36
Цитата

mysql_query("SET NAMES cp1251");

после этого стало добавляться в бд, но вот когда оттуда беру, то вместо русских букв знаки вороса
Код

$b=mysql_query("SELECT password FROM formcrypt2 WHERE name='$_POST[a1]';");
$b=mysql_fetch_array($b);
echo"<br>$b[password]";

Автор: bars80080 25.1.2009, 00:39
а когда берёшь, set names тоже стоит?

Автор: Dmi3ev 25.1.2009, 00:55
со всем разобрался, всем спасибо, все пашет, тема закрыта!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)