Реклама на сайте Advertise with us

Mysql какой то хитрый баг?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

НЕ ЗАНИМАЮСь ФИНАНСАМИ!

С нами с 16.03.03
Сообщения: 1251
Рейтинг: 653

Ссылка на сообщениеДобавлено: 23/06/13 в 18:38       Ответить с цитатойцитата 

первый раз с таким сталкиваюсь -
табличка table1 с полями field1 и field2
поле у field1 атрибуты not null, значения по умолчанию НЕТ
делаю запрос
insert into table1 set field2='blablabla'
вставляет сцуко... ни слова что первое поле не определено,
если field1 строковое - вставляет пустую строку
если field1 числовое вставляет 0
куда копать?
попробовал на др. серваке - таже фигня, это что, нормально?
icon_sad.gif

зы похоже дело в DONT_USE_DEFAULT_FIELDS ...

SubmitPornBlog

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 23/06/13 в 19:53       Ответить с цитатойцитата 

Если нет дефолтного и not null, то на запрос инсерт с пропуском поля должно материться. Точно нет? В SHOW CREATE TABLE?

0
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 23/06/13 в 21:20       Ответить с цитатойцитата 

ну превед, мускуль то небось 5 а не 3...
по умолчанию он вставит значение максимально близкое к заданному.
если пусто - для INT это 0, для TEXT это "" - пустая строка.
попробуй в числовое вставь '123jhgjhg' - хочешь ругни? ее не будет! будет 123 (если, конечно, вставлять "йцу123йцу" - будет 0)
они просто облегчили тебе жизнь, чтоб ты не матерился вместе с ним, когда где-то упустишь колумн. а прикинь, у тебя мегапрога, в 100500 местах есть инсерты. и тут ты альтер тейбл добавляешь колумн нот нул... и что, теперь бегать по всем местам, где идут инсерты и поправлять с учетом на мелкую доработку? танунах. имхо, логично.
Удачи!

1
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 23/06/13 в 21:27       Ответить с цитатойцитата 

Тогда это тупорылая фича. Так быть не должно.

0
 

НЕ ЗАНИМАЮСь ФИНАНСАМИ!

С нами с 16.03.03
Сообщения: 1251
Рейтинг: 653

Ссылка на сообщениеДобавлено: 23/06/13 в 21:37       Ответить с цитатойцитата 

AWD писал:
ну превед, мускуль то небось 5 а не 3...
по умолчанию он вставит значение максимально близкое к заданному.
если пусто - для INT это 0, для TEXT это "" - пустая строка.
попробуй в числовое вставь '123jhgjhg' - хочешь ругни? ее не будет! будет 123 (если, конечно, вставлять "йцу123йцу" - будет 0)
бл... есть такая х...ня
варнинг выдает, но и вставку прозводит
слов нет
они всю валидацию данных отдали на клиент чтоли...

SubmitPornBlog

0
 

НЕ ЗАНИМАЮСь ФИНАНСАМИ!

С нами с 16.03.03
Сообщения: 1251
Рейтинг: 653

Ссылка на сообщениеДобавлено: 23/06/13 в 21:40       Ответить с цитатойцитата 

AWD писал:
имхо, логично.
Удачи!

как эта "фича" отключается?

SubmitPornBlog

0
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 23/06/13 в 22:15       Ответить с цитатойцитата 

Pentarh писал:
Тогда это тупорылая фича. Так быть не должно.
ну да, мускуль же тупицы пишут)) я свое мнение сказал - мне так кажется удобным и логичным. и так же мне удобно, когда я INT могу передать как строку - '321'. вот, передаешь ты форму, где поля соответствуют колонкам в базе. и что я делаю - беру и хуячу в цикле
for($_POST as $key=>$val)
$sql .= "$key='$val'";
ну, дальше понятно, insert into table set implode(',', $sql);
грубо, но все-же.
а если строго следовать букве _устаревшего_ "закона" - ебанешься проверять и прописывать все то, что я записал в 2 строки.
дело хозяйское, не хочешь вставлять - проверяй перед вставкой, выдай варнинг, но никак не ошибку мускуля с засветом для хакера и т.д.
Guest писал:
как эта "фича" отключается?
http://habrahabr.ru/post/166411/
короче, так: SET sql_mode = 'TRADITIONAL';

1
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 23/06/13 в 22:21       Ответить с цитатойцитата 

Вообще то лучше использовать activerecord/portable data objects. Там он уже разбирается что брать в кавычку, что не брать.

0
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 23/06/13 в 22:28       Ответить с цитатойцитата 

ну, юзать чужие дыры и баги - дело личное. я ни PDO не юзаю, ни Smarty и т.д. - зачем мне писать
Код:
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET sql_mode = 'TRADITIONAL'");

если можно
Код:
mysql_query("SET sql_mode = 'TRADITIONAL'");

тупо в 2 раза короче и в 6 понятнее. в чем прикол?
ну да ладно, каждый заблуждается в меру своих возможностей smail54.gif

2
 



С нами с 20.02.06
Сообщения: 248
Рейтинг: 366

Ссылка на сообщениеДобавлено: 24/06/13 в 00:21       Ответить с цитатойцитата 

AWD писал:
зачем мне писать

затем

Цитата:
Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL

0
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 24/06/13 в 00:55       Ответить с цитатойцитата 

CABMIT писал:
тю, блять. пукнул так пукнул. давай допишу букву.
mysqli_query. доволен?
а хуле ты не пишешь, что это
Код:
insert into table set implode(',', $sql);
вообще не сработает. тут тебе не mysql, не mysqli нету - целое поле попукать. заебали посты набивать не по делу вообще.
выпей чаю, да съешь еще булочек французских... -1

2
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 24/06/13 в 03:02       Ответить с цитатойцитата 

Guest писал:
куда копать?
попробовал на др. серваке - таже фигня, это что, нормально?


хм, было бы странно если бы было иначе)
с какого перепугу оно должно ругаться на пустое поле? если логически думать.

вообще помню несколько лет назад была такая фича как strict mode в mysql. не знаю, осталась ли сейчас. вот там оно ругалось на все что можно помню, это пиздец как бесило, я ее первым делом отключал всегда icon_wink.gif

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 24/06/13 в 05:00       Ответить с цитатойцитата 

AWD писал:
тю, блять. пукнул так пукнул. давай допишу букву.
mysqli_query. доволен?
а хуле ты не пишешь, что это
Код:
insert into table set implode(',', $sql);
вообще не сработает. тут тебе не mysql, не mysqli нету - целое поле попукать. заебали посты набивать не по делу вообще.
выпей чаю, да съешь еще булочек французских... -1

Это ты тут воняешь своим быдлокодом - не продохнуть
Код:
беру и хуячу в цикле
for($_POST as $key=>$val)
$sql .= "$key='$val'";

А кодировки? А квотинг? А нахуя кавычки лишние? Твой код воняет багами за километр. Так что чия бы мычала, молчи в тряпочку. mysqli_query тоже чужой баговый код между прочим. Как и весь пхп.

1
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 24/06/13 в 16:06       Ответить с цитатойцитата 

Pentarh писал:
А кодировки? А квотинг? А нахуя кавычки лишние?
бля, ну ты, даешь. это был _пример_. нахуя мне еще писать квотинг и кодировки? (вопрос риторический. и так понятно, что ты просто психопат-истеричка)

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

Последний раз редактировалось: AWD (24/06/13 в 16:15), всего редактировалось 4 раз(а)

-1
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 24/06/13 в 16:07       Ответить с цитатойцитата 

del

-1
 
+ +
WP-Master

С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123


Передовик Master-X (16.02.2015) Передовик Master-X (01.03.2015)
Ссылка на сообщениеДобавлено: 24/06/13 в 16:39       Ответить с цитатойцитата 

AWD: ты чё такой злой?

0
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 24/06/13 в 17:31       Ответить с цитатойцитата 

Дартаньян писал:
AWD: ты чё такой злой?
а пентарх, значит, добрый?))) ну где справедливость?)))
это я раньше злой был, когда бухал. теперь не бухаю.
пойду ка я отсюда. как всегда - поможешь человеку - и на тебе, кто то обязательно начнет тупить и оскорблять. как будто он разработчик пдо. да мне похуй на пдо и на лучи поноса пентарха особенно.
всем мир.
надеюсь, на мастер не зайду очень долго, ибо наказуемо)))
лучше пойду в лес курну шмали с друзьями.

1
 



С нами с 03.02.11
Сообщения: 842
Рейтинг: 301

Ссылка на сообщениеДобавлено: 24/06/13 в 17:45       Ответить с цитатойцитата 

а ну, давай, пентарх-сотонарх, скажи, где здесь лишние кавычки, иначе лохом и останешься
Код:
беру и хуячу в цикле
for($_POST as $key=>$val)
  $sql .= "$key='$val'";
ну, дальше понятно, insert into table set implode(',', $sql);
я тут по быстрому ошибся, вместо $sql .= нужно было написать $sql[] =
короче, все, ушел с форума...

Последний раз редактировалось: AWD (24/06/13 в 20:18), всего редактировалось 1 раз

0
 
+ +
WP-Master

С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123


Передовик Master-X (16.02.2015) Передовик Master-X (01.03.2015)
Ссылка на сообщениеДобавлено: 24/06/13 в 19:33       Ответить с цитатойцитата 

AWD: ну не знаю как нажрешьси так добрее чем ты тут никого нет, а как трезвый жуть.

0
 

НЕ ЗАНИМАЮСь ФИНАНСАМИ!

С нами с 16.03.03
Сообщения: 1251
Рейтинг: 653

Ссылка на сообщениеДобавлено: 24/06/13 в 20:52       Ответить с цитатойцитата 

ни разу до этого не встречал ситуации когда в поле типа int можно строку запихнуть, вставки не должно произойти
тоже самое - поле не указано явно, значит нулл, если атребует "не нул" - ошибка должна быть...
меня совсем не радует что необходимо на клиента валидаторы сейчас накручивать в код
надежда только что при сборке мускула это "продуманность" поотключать можно

SubmitPornBlog

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »