НЕ ЗАНИМАЮСь ФИНАНСАМИ!
С нами с 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
куда копать?
попробовал на др. серваке - таже фигня, это что, нормально?
зы похоже дело в DONT_USE_DEFAULT_FIELDS ...
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 23/06/13 в 19:53 |
Если нет дефолтного и not null, то на запрос инсерт с пропуском поля должно материться. Точно нет? В SHOW CREATE TABLE?
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 23/06/13 в 21:20 |
ну превед, мускуль то небось 5 а не 3...
по умолчанию он вставит значение максимально близкое к заданному.
если пусто - для INT это 0, для TEXT это "" - пустая строка.
попробуй в числовое вставь '123jhgjhg' - хочешь ругни? ее не будет! будет 123 (если, конечно, вставлять "йцу123йцу" - будет 0)
они просто облегчили тебе жизнь, чтоб ты не матерился вместе с ним, когда где-то упустишь колумн. а прикинь, у тебя мегапрога, в 100500 местах есть инсерты. и тут ты альтер тейбл добавляешь колумн нот нул... и что, теперь бегать по всем местам, где идут инсерты и поправлять с учетом на мелкую доработку? танунах. имхо, логично.
Удачи!
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 23/06/13 в 21:27 |
Тогда это тупорылая фича. Так быть не должно.
|
|
|
|
НЕ ЗАНИМАЮСь ФИНАНСАМИ!
С нами с 16.03.03
Сообщения: 1251
Рейтинг: 653
|
Добавлено: 23/06/13 в 21:37 |
AWD писал: | ну превед, мускуль то небось 5 а не 3...
по умолчанию он вставит значение максимально близкое к заданному.
если пусто - для INT это 0, для TEXT это "" - пустая строка.
попробуй в числовое вставь '123jhgjhg' - хочешь ругни? ее не будет! будет 123 (если, конечно, вставлять "йцу123йцу" - будет 0)
|
бл... есть такая х...ня
варнинг выдает, но и вставку прозводит
слов нет
они всю валидацию данных отдали на клиент чтоли...
|
|
|
|
НЕ ЗАНИМАЮСь ФИНАНСАМИ!
С нами с 16.03.03
Сообщения: 1251
Рейтинг: 653
|
Добавлено: 23/06/13 в 21:40 |
AWD писал: | имхо, логично.
Удачи! |
как эта "фича" отключается?
|
|
|
|
С нами с 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';
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 23/06/13 в 22:21 |
Вообще то лучше использовать activerecord/portable data objects. Там он уже разбирается что брать в кавычку, что не брать.
|
|
|
|
С нами с 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 понятнее. в чем прикол?
ну да ладно, каждый заблуждается в меру своих возможностей
|
|
|
|
С нами с 20.02.06
Сообщения: 248
Рейтинг: 366
|
Добавлено: 24/06/13 в 00:21 |
AWD писал: | зачем мне писать |
затем
Цитата: | Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL |
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 24/06/13 в 00:55 |
тю, блять. пукнул так пукнул. давай допишу букву.
mysqli_query. доволен?
а хуле ты не пишешь, что это
Код: | insert into table set implode(',', $sql); |
вообще не сработает. тут тебе не mysql, не mysqli нету - целое поле попукать. заебали посты набивать не по делу вообще.
выпей чаю, да съешь еще булочек французских... -1
|
|
|
|
С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506
|
Добавлено: 24/06/13 в 03:02 |
Guest писал: | куда копать?
попробовал на др. серваке - таже фигня, это что, нормально? |
хм, было бы странно если бы было иначе)
с какого перепугу оно должно ругаться на пустое поле? если логически думать.
вообще помню несколько лет назад была такая фича как strict mode в mysql. не знаю, осталась ли сейчас. вот там оно ругалось на все что можно помню, это пиздец как бесило, я ее первым делом отключал всегда
|
|
|
|
Криптопохуист
С нами с 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 тоже чужой баговый код между прочим. Как и весь пхп.
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 24/06/13 в 16:06 |
Pentarh писал: | А кодировки? А квотинг? А нахуя кавычки лишние? |
бля, ну ты, даешь. это был _пример_. нахуя мне еще писать квотинг и кодировки? (вопрос риторический. и так понятно, что ты просто психопат-истеричка)
ты уже проявил свое незнание и непонимание мускуля, топикстартеру не помог, а вводил в заблуждение, так что сам в тряпочку кашляй своей саркомой..
ты перешел на личности, оскорбляешь меня. я б тебя обхуесосил, но решил не уподобляться быдлу.
я сейчас мимо церкви проходить буду, поставлю за тебя свечку...
Последний раз редактировалось: AWD (24/06/13 в 16:15), всего редактировалось 4 раз(а)
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 24/06/13 в 16:07 |
del
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 24/06/13 в 16:39 |
AWD: ты чё такой злой?
|
|
|
|
С нами с 03.02.11
Сообщения: 842
Рейтинг: 301
|
Добавлено: 24/06/13 в 17:31 |
Дартаньян писал: | AWD: ты чё такой злой? |
а пентарх, значит, добрый?))) ну где справедливость?)))
это я раньше злой был, когда бухал. теперь не бухаю.
пойду ка я отсюда. как всегда - поможешь человеку - и на тебе, кто то обязательно начнет тупить и оскорблять. как будто он разработчик пдо. да мне похуй на пдо и на лучи поноса пентарха особенно.
всем мир.
надеюсь, на мастер не зайду очень долго, ибо наказуемо)))
лучше пойду в лес курну шмали с друзьями.
|
|
|
|
С нами с 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 раз
|
|
|
|
+ +
WP-Master
С нами с 17.01.13
Сообщения: 1922
Рейтинг: 1123
|
Добавлено: 24/06/13 в 19:33 |
AWD: ну не знаю как нажрешьси так добрее чем ты тут никого нет, а как трезвый жуть.
|
|
|
|
НЕ ЗАНИМАЮСь ФИНАНСАМИ!
С нами с 16.03.03
Сообщения: 1251
Рейтинг: 653
|
Добавлено: 24/06/13 в 20:52 |
ни разу до этого не встречал ситуации когда в поле типа int можно строку запихнуть, вставки не должно произойти
тоже самое - поле не указано явно, значит нулл, если атребует "не нул" - ошибка должна быть...
меня совсем не радует что необходимо на клиента валидаторы сейчас накручивать в код
надежда только что при сборке мускула это "продуманность" поотключать можно
|
|
|
|