Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: null записывается в базу как ноль
Покинул форум
Сообщений всего: 4
Дата рег-ции: Сент. 2015
Помог: 0 раз(а)
Значит ситуация такова:
Есть таблица в которой значения полей в которой null
Есть набор переменных:
$id=$_POST['id'];}
$num=$_POST['num'];}
$price=$_POST['price'];}
$rarity=$_POST['rarity'];}
$sell=$_POST['sell'];}
$coef=$_POST['coef'];}
Есть запрос:
$query="UPDATE `$dbName`.`$table` SET `num`='".$num."',`price`='".$price."',`coef`='".$coef."' WHERE `$table`.`id`='".$id."' LIMIT 1;";
Значения всех переменных - null, но после выполнения запроса в базе я вижу '0' вместо 'null'. В чем может быть причина?
OrmaJever
Отправлено: 24 Сентября, 2015 - 12:42:35
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
а вы бы вывели запрос да посмотрели, там примерно такая запись num = '', а должна быть вот такая num = null. Вот и думайте как это исправить
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
LIME
Отправлено: 24 Сентября, 2015 - 12:47:08
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
OrmaJever ошибаешься
При пустой строке и без not null будет именно null highroller проверь настройки полей
Должно быть проставлено разрешение значения null по умолчанию
И тогда при пустой строке будет проставлен null
Конечно если не передается 0 явно
highroller
Отправлено: 24 Сентября, 2015 - 12:50:53
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Сент. 2015
Помог: 0 раз(а)
LIME уже проверил, null разрешен, по умолчанию - null
Ноль точно не передается
Непосредственно перед запросом:
if ($num == null)echo 'TRUE'; результат - 'TRUE'
LIME
Отправлено: 24 Сентября, 2015 - 12:53:35
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Дык сам запрос выведи и смотри
Если сам не догонишь сюда его кидай
Вместе с таблицой в формате create (Добавление)
$num === null
Мелкий
Отправлено: 24 Сентября, 2015 - 13:17:50
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
LIME пишет:
При пустой строке и без not null будет именно null
Мне известны два варианта и ни в одном из них на пустую строку null'а нет.
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Такой запрос непосредственно в консоли
UPDATE `price1`.`misc` SET `num`='null',`name`='item1',`price`='null',`coefficient`='null' WHERE `misc`.`id`='0001' LIMIT 1;
выдает вполне ожидаемые результаты, т. е. null в нужных полях.
А вот тот же запрос выполненный из php - уже нули
$query="UPDATE `price1`.`misc` SET `num`='".$num."',`name`='".$name."',`price`='".$price."',`coefficient`='".$coefficient."' WHERE `misc`.`id`='0001' LIMIT 1;";
mysql_query($query) or die("Запрос не выполнен!");
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
highroller пишет:
А вот тот же запрос выполненный из php - уже нули
$query="UPDATE `price1`.`misc` SET `num`='".$num."',`name`='".$name."',`price`='".$price."',`coefficient`='".$coefficient."' WHERE `misc`.`id`='0001' LIMIT 1;";
mysql_query($query) or die("Запрос не выполнен!");
Вполне себе 0, а не NULL. И тройка варнингов на месте.
LIME пишет:
Когдато столкнулся с написанием автоинкремента как пустой строки, там можно и null также писать
И 0 тоже спровоцирует выдачу нового сиквенса. Отключается через NO_AUTO_VALUE_ON_ZERO в том же sql_mode.
----- PostgreSQL DBA
LIME
Отправлено: 24 Сентября, 2015 - 17:02:15
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Мелкий пишет:
Отключается через NO_AUTO_VALUE_ON_ZERO в том же sql_mode.
избегается использованием "человеческой" модели
highroller
Отправлено: 24 Сентября, 2015 - 17:16:20
Новичок
Покинул форум
Сообщений всего: 4
Дата рег-ции: Сент. 2015
Помог: 0 раз(а)
Всем спасибо за помощь Видно глаз совсем замылен
Добавил проверку типа
if ($_POST['num']==null){$num="NULL";}else{$num=$_POST['num'];}
все заработало как надо!
Можно закрывать
P.S. Кавычки, как всегда кавычки...
Вот правильный запрос
$query="UPDATE `price1`.`misc` SET `num`=$num,`name`='$name',`price`=$price,`coefficient`=$coefficient WHERE `misc`.`id`='0001' LIMIT 1;";
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.