Привет, как средствами MYSQL можно побороть.
Есть поле varchar(3) - уникальное.
1. В него добавили слово "1234" при этом "4" обрезалось.
2. Нужно проверить есть ли в таблице слово "1234" делам SELECT (вытащить id) говорит, что нет (так-как там "123" осталось)
3. Тогда делаем "1234" INSERT, чтоб вытащить insert_id, но будет ошибка поле уже есть (INSERT IGNORE не походит - нужен id)
Можно ли решить проблему:
1. Без mysql регулярок в запросе - т.к. длина varchar может быть не известна
2. Без предварительной проверки/обрезки php
3. Без увеличения длины поля
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
22.02.2015 - 14:58
GET, первое, что приходит в голову, "надо знать структуру БД". Тогда таких проблем не будет.
И я не понял, как ты вставил '1234'? Пробую - не вставляется, говорит
Цитата |
Data too long for column 'name' at row 2 |
Структура таблицы:
CREATE TABLE `tab5` (
`id` int(11) DEFAULT NULL,
`name` varchar(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Valick
22.02.2015 - 15:18
Цитата (GET @ 22.02.2015 - 13:12) |
В него добавили слово "1234" при этом "4" обрезалось. |
ну если обрезалось, значит уже не добавилось
Очень интересно с какого перепугу вообще возникла подобная задача?
Вообще-то перед тем как "сувать шо попало" в БД, данные должны проходить валидацию, которая собственно включает в себя контроль размерности.
_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Valick
Спасибо. Разобрался вроде, так до конца и не понял почему так изначально получилось - два разных человека писали один скрипт. Друг за другом затерали валидацию.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.