Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: not null в запросе кода пхп
 
 автор: Golovastik   (17.07.2010 в 01:33)   письмо автору
 
 

Какой смысл при создании таблицы в базе данных, например вот такой:


create table yra(id int(5), samolyot varchar(10), tata varchar(50) not null, primary key(id));


Какую роль играет not null при добавлении информации в базу данных через форму сайта?

  Ответить  
 
 автор: sms-send   (17.07.2010 в 08:14)   письмо автору
 
   для: Golovastik   (17.07.2010 в 01:33)
 

tata varchar(50) not null - поле не может содержать значение NULL, значит это поле обязательно для заполнения. Если в запросе не будет указано значение для этого поля, то будет вставлено значение по умолчанию.

  Ответить  
 
 автор: Trianon   (17.07.2010 в 10:20)   письмо автору
 
   для: sms-send   (17.07.2010 в 08:14)
 

>tata varchar(50) not null - поле не может содержать значение NULL, значит это поле обязательно для заполнения.
>Если в запросе не будет указано значение для этого поля, то будет ...

то было бы

>вставлено значение по умолчанию.

окажись оно указано в описании таблицы. Но оно и там указано не было.
Поэтому такой INSERT-запрос будет отвергнут, как ошибочный.

  Ответить  
 
 автор: sms-send   (17.07.2010 в 11:51)   письмо автору
 
   для: Trianon   (17.07.2010 в 10:20)
 

> такой INSERT-запрос будет отвергнут, как ошибочный.

Для mysql верно только в strict mode. В режиме по умолчанию всё-же ставит умолчательную пустую строчку.

  Ответить  
 
 автор: Golovastik   (17.07.2010 в 16:18)   письмо автору
 
   для: sms-send   (17.07.2010 в 11:51)
 

Но если я даже ничего не заполню на форме сайта и нажму клавишу "ЕНТЕР" или кнопку, в базу данных просто добавится пустая строка, с номером ид, видите всё арвно заполняется пустотой и доьбавляется и на not null не реагирует.

  Ответить  
 
 автор: sms-send   (17.07.2010 в 16:40)   письмо автору
 
   для: Golovastik   (17.07.2010 в 16:18)
 

Строка нулевой длины и NULL - разные вещи.
Строка нулевой длины - является строкой и имеет все свойства строки, ту же длину, хоть и нулевую. А NULL обозначает отсутствие данных.

  Ответить  
 
 автор: Golovastik   (17.07.2010 в 17:18)   письмо автору
 
   для: sms-send   (17.07.2010 в 16:40)
 

Хорошо ,читаем то тчо вы написали выше:
    tata varchar(50) not null - поле не может содержать значение NULL,

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

  Ответить  
 
 автор: sms-send   (17.07.2010 в 17:26)   письмо автору
 
   для: Golovastik   (17.07.2010 в 17:18)
 

> текстовые поля пусты
В них строки нулевой длины, это тоже строки. А NULL - это отсутствие значения в поле.

> нуль добавляется в ячейку таблицы
Прямо таки добавляется именно NULL, а не строчка ""? Видимо баг в СУБД.

Покажите запрос, которым данные из приложения добавляются в таблицу.

Пример на PHP:
<?php

var_dump
(@$abc); // выводит NULL, потому что переменной не существует, 
                 // значит не существует и значения
$abc ''// определяем значение переменной
var_dump(@$abc); // выводит string(0) "", переменная существует и содержит
                 // в себе строку нулевой длины

var_dump(NULL===''); // bool(false), потому что NULL и пустая строка - не одно и тоже

  Ответить  
 
 автор: Trianon   (17.07.2010 в 17:47)   письмо автору
 
   для: Golovastik   (17.07.2010 в 17:18)
 

форма, её поля, процесс отправки значенияй этих полей, всё это не имеет никакого отношения к работе с сервером БД.
Не создавайте ненужных взаимосвязей. Применяйте бритву Оккама.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования