Разумеется, данные вносятся не в Базу Данных, а конкретную таблицу БД. Следовательно, проблема, скорее всего, состоит в неоответсвии типов вставляемых значений (а они приходят из формы анкеты) и полей ранее созданной таблицы. Проблема также может быть вызвана попыткой вставки незаполненных данных анкеты (пустых текствых полей) в поля таблицы, в которых недопустимы NULL значения.
В случае если типы данных совпадают, то возможно что проблема связана с переполнением полей таблицы поступающими значениями, длина которых превышает размерность полей таблицы БД.
Пожалуйста, не забывайте про основные типы и языковые конструкции MySQL:
=== Числовые типы данных MySQL ===
где M - ширина поля при отображении (не более 255). D - число знаков после запятой. P - точность представления. Если число занимает меньше M разрядов, то оно дополняется слева пробелами. Если указано ZEROFILL то нулями. Если используется ZEROFILL для целых, то автоматически добавляется UNSIGNED. Все вычисляется с точностью 63 бита или переводом в DOUBLE.
TINYINT[(M)] [UNSIGNED] [ZEROFILL] (1 байт) SMALLINT[(M)] [UNSIGNED] [ZEROFILL] (2 байта) MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] (3 байта) INT[(M)] [UNSIGNED[ [ZEROFILL] (4 байта) INTEGER[(M)] [UNSIGNED] [ZEROFILL] (4 байта) BIGINT[(M)] [UNSIGNED] [ZEROFILL] (8 байт) FLOAT[(p)] [UNSIGNED] [ZEROFILL] (p от 0 до 24 или от 25 до 53) FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] (4 байта) DOUBLE [PRECISION][(M,D)] [UNSIGNED] [ZEROFILL] REAL[(M,D)] [UNSIGNED] [ZEROFILL] (синоним DOUBLE) DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] - десятичное вещественное число
DEC, NUMERIC, FIXED - синоним DECIMAL SERIAL - аналог BIGINT UNSIGNED NOT NULL AUTO_INCREMENT BOOLEAN - аналогс TINYINT (1); 0 - false, 1 - true BIT [(M)] - строка бит от 1 до 64
=== Типы дата и время ===
Неверные значения преобразуются в "нулевое" - 0000-00-00 (режим NO_ZERO_DATE);
DATE (дата от '1000-01-01' до '9999-12-31'; 3 байта) DATETIME (время от '1000-01-01 00:00:00' до '9999-12-31 23:59:59'; 8 байт) TIMESTAMP[(M)] (время от 19700101000000 до 2037 года; 4 байта) 14 (по умолчанию) - YYYYMMDDHHMMSS 12 - YYMMDDHHMMSS 8 - YYYYMMDD 6 - YYMMDD TIME (интервал времени от -838:59:59 до 838:59:59; выводится как HH:MM:SS) можно
YEAR[(4|2)]
=== Текстовые типы данных ======
Максимальная длина строки таблицы и пакета протокола 16 МБ. ORDER BY и GROUP BY работают только с объектами фиксированной длины.
CHAR(M) [BINARY | ASCII | UNICODE] (поле фиксированной длины от 1 до 255) NCHAR - аналог NATIONAL CHAR CHARACTER - аналог CHAR CHAR BYTE - аналог CHAR BINARY VARCHAR(M) [BINARY] - строка переменной длины; M до 65532 в версии MySQL 5 CHARACTER VARYING - аналог VARCHAR TINYBLOB (BLOB макс. длины 255) TINYTEXT (TEXT макс. длины 255) BLOB (BLOB макс. длины 65535) TEXT (TEXT макс. длины 65535) MEDIUMBLOB (BLOB макс. длины 2^24-1) MEDIUMTEXT (TEXT макс. длины 2^24-1) LONGBLOB (BLOB макс. длины 2^32-1, в действительности - 16МБ) LONGTEXT (TEXT макс. длины 2^32-1) LONG VARCHAR - аналог MEDIUMTEXT BINARY(M) (последовательность байт фиксированной длины) VARBINARY(M) (последовательность байт переменной длины; не больше M)
=== Функции и базовые синтаксические конструкции ===
- конструкции группировки функций задаются с помощью круглых скобок - арифметические действия: +, -, *, / - битовые функции: |, &, <<, >>, ~, BIT_COUNT() - логические конструкции: !, ||, && (возвращают 1, 0, или NULL) - сравнение:
=, <>, !=, <=, <, >=, > <=> (сравнение, позволяющее сравнивать NULL) expr IS NULL, expr IS NOT NULL expr BETWEEN min AND max expr IN (значение1,...) expr NOT IN (значение1,...) ISNULL() COALESCE(список) - возвращает первый ненулевой элемент списка INTERVAL(N,N1,N2,N3,...) - возвращает № интервала: 1, если N < N1; 2 если N < N2...
- сравнение текста (чувствительность к регистру)
expr LIKE шаблон [ESCAPE 'escape-символ']
% - любое количество любых символов;
_ - ровно один символ;
\ - escape-символ по умолчанию (чтобы найти конец строки '\n' надо задать '\\n'); expr NOT LIKE шаблон expr REGEXP шаблон (сравнение с расширенным регулярным выражением) expr RLIKE шаблон (сравнение с расширенным регулярным выражением) expr NOT REGEXP шаблон expr NOT RLIKE шаблон - STRCMP(expr1,expr2) (арифметическое сравнение строковых выражений:
-1 если первая строка меньше, 0 если равны, 1 если первая строка больше) - MATCH (колонка1,колонка2,...) AGAINST (expr)
возвращает меру релевантности/соответствия (необходим FULLTEXT индекс)
- условные выражения IFNULL(expr1,expr2) (если expr1 есть NULL, то возвращает expr2, иначе expr1) NULLIF(expr1,expr2) (если равны, то возвращает NULL, иначе - expr1) IF(expr1,expr2,expr3) (если expr1, то возвращает expr2, иначе expr3) CASE значение1
WHEN [значение2] THEN результат1
[WHEN [значение3] THEN результат2 ...]
[ELSE результатn]
END CASE
WHEN [условие1] THEN результат1
[WHEN [условие2] THEN результат2 ...]
[ELSE результатn]
END
- математические функции (в случае ошибки возвращают NULL) ABS(X), SIGN(X), MOD(N,M),
FLOOR(X), CEILING(X), ROUND(X), ROUND(X,знаков_после_точки),
EXP(X), LOG(X), LOG10(X), POWER(X,Y), SQRT(X),
PI(), COS(радиан), SIN(радиан), TAN(радиан),
ACOS(X), ASIN(X), ATAN(X), ATAN2(Y,X), COT(X),
RAND(), RAND(граница), LEAST(X,Y,...), GREATEST(X,Y,...),
DEGREES(радианы), RADIANS(градусы), TRUNCATE(X,знаков_после_точки)
- функции обработки строк (позиции символов нумеруются с 1)
ASCII(str) - ASCII-код первого символа строки ORD(str) - ASCII-код с учетом мультибайтных символов CONV(N,основание1,основание2) - преобразование N в разные системы счисления BIN(N) - аналог CONV(N,10,2) OCT(N) - аналог CONV(N,10,8) HEX(N) - аналогс CONV(N,10,16) CHAR(целое,...) - возвращает строку из символов по их кодам CONCAT(str1,str2,...) - сцепляет строки CONCAT_WS(разделитель,str1,str2,...) - сцепление с разделителем LENGTH(str), OCTET_LENGTH(str) CHAR_LENGTH(str), CHARACTER_LENGTH(str) - с учетом двухбайтного представления LOCATE(подстрока,строка[,нач_позиция]) - поиск подстроки в строке
POSITION(подстрока IN строка)
INSTR(строка,подстрока) - с учетом двухбайтных символов LPAD(строка,длина,строка_заполнитель) - нарастить строку слева до длины RPAD(строка,длина,строка-заполнитель) - нарастить строку справа до длины LEFT(строка,N) - получить N символов слева RIGHT(строка,N) - получить N символов справа SUBSTRING(строка,начальная-позиция[,длина])
SUBSTRING(строка FROM начальная-позиция[ FOR длина])
MID(строка,начальная-позиция,длина)
SUBSTRING_INDEX(строка,разд,N) - до указанного числа разделителей LTRIM(строка) - удаление пробелов слева RTRIM(строка) - удаление пробелов справа TRIM(строка) - удаляются пробелы с обоих сторон SPACE(число) - выбрать указанное число пробелов REPLACE(строка,что,на_что) - замена внутри строки REPEAT(str,N) - повтор строки REVERSE(str) - перестановка символов в обратном порядке INSERT(строка,поз,длина,новая-строка) - замена фрагментов строк ELT(N,str1,str2,...) - возвращает N-ю строку FIELD(str,str1,str2,str3,...) - возвращает номер строки str в списке str1,... FIND_IN_SET(строка,список) - номер строки в списке (строки через запятую) MAKE_SET(биты,строка1,строка2,...) - сцепляет строки в список через запятую LCASE(строка) - преобразование к нижнему регистру LOWER(строка) - преобразование к нижнему регистру UCASE(строка) - преобразование к верхнему регистру UPPER(строка) - преобразование к верхнему регистру LOAD_FILE(полное_имя_файла) - содержимое файла возвращается как строка
- работа со временем и датами
DAYOFWEEK(дата) - воскресенье: 1, понедельник: 2 и т.д. WEEKDAY(дата) - понедельник: 0, вторник: 1 и т.д. DAYOFMONTH(дата) DAYOFYEAR(дата) MONTH(дата) DAYNAME(дата) - в формате: 'Thursday' MONTHNAME(дата) - в формате 'February' QUARTER(дата) WEEK(дата) - от 0 до 53; (первый день недели - воскресенье) WEEK(дата,нач_недели) - если нач_недели = 1, то неделя с понедельника YEAR(дата) YEARWEEK(дата[,нач_недели]) - год и номер недели HOUR(время) MINUTE(время) SECOND(время) PERIOD_ADD(P,N) - добавить N месяцев к периоду (P в формате YYYYMM) PERIOD_DIFF(P1,P2) - число месяцев между периодами
DATE_ADD(дата,INTERVAL) либо ADDDATE(дата,INTERVAL)
единицы измерения интервала:
SECOND,MINUTE,HOUR,DAY MONTH ('1998-01-30' + Interval 1 month => '1998-02-28') YEAR, MINUTE_SECOND ("минут:секунд"), HOUR_MINUTE ("часов:минут") DAY_HOUR ("дней часов"), YEAR_MONTH ("лет_месяцев") HOUR_SECOND ("часов:минут:секунд") DAY_MINUTE ("дней часов:минут") DAY_SECUND ("дней часов:минут:секунд")
DATE_SUB(дата,INTERVAL) либо SUBDATE(дата,INTERVAL) EXTRACT(ед_изм FROM дата) - возвращает интервал указанного типа TO_DAYS(дата) - возвращает номер дня с 0-го года FROM_DAYS(N) - обратная функция к TO_DAYS() DATE_FORMAT(дата,формат) - преобразует дату в соответствии с форматом
%M - полное английское имя месяца;
%W - полное английское имя дня недели;
%D - день месяца с английским суффиксом;
%c - номер месяца от 1 до 12;
%h - час от 01 до 12;
%i - минуты от 00 до 59 TIME_FORMAT(время,формат) - аналог DATE_FORMAT CURDATE() - '1999-11-25' или 19991125 CURRENT_DATE - синоним CURDATE() CURTIME() - '22:55:16' или 225516 CURRENT_TIME - синоним CURTIME() NOW() либо SYSDATE() либо CURRENT_TIMESTAMP - '1991-11-25 21:51:16' или текст UNIX_TIMESTAMP([дата]) - число секунд с 1 января 1970 GMT FROM_UNIXTIME(timestamp[,формат]) - обратная к UNIX_TIMESTAMP() SEC_TO_TIME(секунд) - преобразует секунды в часы:минуты:секунды TIME_TO_SEC(время) - преобразует часы:минуты:секунды в секунды
- разные функции DATABASE() - возвращает имя текущей БД USER() или SYSTEM_USER() или SESION_USER() - имя пользователя user1@localhost
PASSWORD(строка) - перевод пароля во внутренний вид ENCRYPT(строка[,ключ]) - шифрование пароля ENCODE(строка,пароль) - шифрование пароля DECODE(строка_шифрования,пароль) - расшифрование пароля MD5(строка) LAST_INSERT_ID([выражение]) - код последней вставленной записи FORMAT(X,D) - вывод отформатированного числа, D - число цифр после точки VERSION() CONNECTION_ID() GET_LOCK(имя_блокировки,timeout-секунд)
1 при успехе, 0 - при timeout, NULL - при ошибке;
освобождается при RELEASE_LOCK(), новом GET_LOCK() RELEASE_LOCK(имя_длокировки)
1 при успехе; 0 - если блокировка установлена другим потоком; NULL - ошибка INET_NTOA(выражение) - преобразование IP в "точечный" формат INET_ATON(выражение) - преобразование IP в целое с сетевым порядком байт MASTER_POS_WAIT(имя_журнала,позиция) - синхроницация репликаций
- конструкции агрегирования данных
COUNT(выражение) - число не-NULL значений в группе COUNT(*) - количество всех извлеченных строк COUNT(DISTINCT выражение) - число уникальных не-NULL значений AVG(выражение) - среднее MIN(выражение), MAX(выражение) - если нет, то NULL SUM(выражение) - сумма значений (или NULL) STD(выражение) или STDDEV(выражение) - стандартное отклонение BIT_OR(выражение) - побитовое или BIT_AND(выражение) - побитовое И
=== Резервное копирование данных MySQL ===
Каждая таблица БД MySQL представляет собой отдельный файл. Поэтому резервирование данных осуществляется обычным копированием файлов таблиц БД.
Для выполнения резервного копирования необходимо остановить сервер MySQL или заблокировать запись в таблицу (командой LOCK TABLES) и сбросить связанные с таблицами индексы (директива FLUSH TABLES). Разумеется, после выполнения резервного копирования таблицу необходимо разблокировать (команда UNLOCK TABLES).
Для выполнения резервирования с помощью команд SQL достаточно воспользоваться конструкцией SELECT INTO или директивой BACKUP TABLE.
Полное резервное копирование БД можно выполнить с помощью утилиты mysqldump или с помощью веб-приложения phpMyAdmin (последнее настоятельно рекомендуется). phpMyAdmin позволяет администрировать БД MySQL: создавать, удалять и редактировать БД, таблицы, работать с командной строкой, генерировать резервную копию БД и восстанавливать БД из ранее созданной резервной копии. Эта программа входит в типовой инструментальный набор планов хостинга с поддержкой MySQL.
|