2017-02-21 4 views
0

У меня есть массив поля в моей формеНе вставляйте пустые значения в Mysqli Query

<input type="text" class="form-control" name="event_title[]"> 

я получаю все данные и вставляли в моей базе данных успешно

$events = $_POST['event_title']; 
    $totalEvents = sizeof($events); 
    for($i = 0; $i < $totalEvents; $i++) { 
     $event_title = $events[$i]; 
     $sql1 = "INSERT INTO event_title (event_id, event_title) 
      VALUES (
      '".$lastid."', 
      '".$event_title."' 
      )"; 
    $result1 = mysqli_query($conn,$sql1); 

Моя проблема заключается в том, как предотвратить ли значение NULL в моей базе данных?

+1

Проверьте, равна ли переменная. if ($ variable! = null) {// insert it} else {// это null, throw exception} – Akintunde007

+2

Также можно изменить схему/столбцы таблицы базы данных на 'NOT NULL' – JustBaron

+0

С вашим кодом невозможно вставить значения NULL в базе данных. –

ответ

0

Просто проверить, если переменная пуста может использовать! = «»

$events = $_POST['event_title']; 
     $totalEvents = sizeof($events); 
     for($i = 0; $i < $totalEvents; $i++) { 
      $event_title = $events[$i]; 
      if($event_title!=''){ 
      $sql1 = "INSERT INTO event_title (event_id, event_title) 
       VALUES (
       '".$lastid."', 
       '".$event_title."' 
       )"; 
     $result1 = mysqli_query($conn,$sql1); 
     } 
    } 
+0

почему вы не могли использовать if ($ event_title! = Null) – Akintunde007

+0

есть ли что-то другое? –

0

Вы можете создать NOT NULL ограничение в создании или изменении таблицы.

Если вы еще не создать вам таблицу:

CREATE TABLE authors(
    author_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    author_name VARCHAR(40) NOT NULL, 
    bio VARCHAR(400) NULL 
) 

Вы можете добавить NOT NULL ограничение для вас колонки, чтобы предотвратить NULL значения.

Если вы уже создали таблицу, вы можете изменить:

ALTER TABLE table 
ALTER COLUMN column NOT NULL; 
0

Попробуйте

$totalEvents = sizeof($_POST['event_title']); 
for ($i = 0; $i < $totalEvents; $i++) { 
    $event_title = $events[$i]; 
    if (strlen($event_title) == 0) { 
     continue; 
    } 

    $sql1 = "INSERT INTO event_title (event_id, event_title) 
    VALUES (
    '" . $lastid . "', 
    '" . $event_title . "' 
    )"; 
    $result1 = mysqli_query($conn, $sql1); 

} 
0

Во-первых, я прояснится распространенное заблуждение.

NULL не означает то же, что и FALSE, или пустую строку или 0. Это значение NULL. Это по сути означает «НЕИЗВЕСТНО».

NOT NULL строка поле может иметь пустое значение, но оно не может иметь значение NULL (т.е. это может быть известно, что пустая строка, но не может быть неизвестен)

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

Вот рабочий процесс в псевдокоде:

DO { 

GET form submission. 

WHILE (form is not valid); 

insert form values into database. 

Если правило является то, что ваша таблица не позволяет NULLs - проверить эти столбцы не нулевые, как часть проверки и провалить проверку, если они есть.