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
Форумы портала PHP.SU :: Версия для печати :: MySQL как сделать ввод нескольких переменных в БД
Форумы портала PHP.SU » » Вопросы новичков » MySQL как сделать ввод нескольких переменных в БД

Страниц (1): [1]
 

1. Webtest - 09 Августа, 2014 - 13:57:17 - перейти к сообщению
Здравствуйте.

Я начал изучать MySQL, подскажите пожалуйста, как можно реализовать следующее:
Есть форма ввода.
Спойлер (Отобразить)

Как в mysql сделать так, что если какой-то пункт при вводе пустой, то БД он попадал как NULL?
Вот код mysql:
PHP:
скопировать код в буфер обмена
  1. $mysqli = mysqli_connect('localhost', 'root', '***') or die(mysqli_error($mysqli));
  2. mysqli_select_db($mysqli, 'dbtest') or die (mysqli_error($mysqli));
  3. if (!empty($_POST['FirstName'])) {
  4. $strSQL = "INSERT INTO tabletest(FirstName) VALUES('" . $_POST['FirstName'] . "')";
  5. }      
  6. mysqli_query($mysqli, $strSQL) or die (mysqli_error($mysqli));
  7. mysqli_close($mysqli);
  8. header("location: MySQL.php");

Я сделал добавление через if 1 переменной, но есть описывать каждую переменную так, и писать в ней mysql_querry, то создается несколько человек с 1 заполненной ячейкой.

В кратце: как сделать так, чтобы если я не заполнил какие-то поля в спойлере, то в БД создавался 1 "пользователь", а незаполненные поля показывались как NULL?
Надеюсь понятно описал.
2. Viper - 09 Августа, 2014 - 16:27:05 - перейти к сообщению
примерно так:
PHP:
скопировать код в буфер обмена
  1. $firstname = isset($_POST['FirstName']) && !empty($_POST['FirstName']) ? mysqli_real_escape_string($mysqli, $_POST['FirstName']) : '';
  2. $lastname = isset($_POST['LastName']) && !empty($_POST['LastName']) ? mysqli_real_escape_string($mysqli, $_POST['LastName']) : '';
  3. $tel = isset($_POST['Phone']) && !empty($_POST['Phone']) ? $_POST['Phone'] : '';
  4. $birthday = isset($_POST['BirthDate']) && !empty($_POST['BirthDate']) ? $_POST['BirthDate'] : '';
  5.  
  6. $strSQL = "INSERT INTO `tabletest` (`FirstName`, `LastName`, `Phone`, `BirthDate`) VALUES('".$firstname."', '".$lastname."', '".$tel."', '".$birthday."')";
3. Webtest - 09 Августа, 2014 - 19:54:01 - перейти к сообщению
Viper, что-то я сегодня много сидел и думал. Что забыл про такие простые решения Улыбка спасибо.
4. OrmaJever - 09 Августа, 2014 - 20:09:48 - перейти к сообщению
Viper пишет:
isset($_POST['FirstName']) && !empty($_POST['FirstName'])

хочу добавить что empty так же как и isset не выкидывает нотис, поэтому isset здесь не нужен
5. Webtest - 09 Августа, 2014 - 20:10:15 - перейти к сообщению
Viper, только такой вопрос, у меня в БД установлены значения для телефона - bigint, а для даты - date, поэтому если туда вставляешь пустоту '', то выскакивает ошибка: Incorrect date value: '' for column 'BirthDate' at row 1, как от неё избавится?
Какие есть стандарные значения NULL для date и bigint?!
6. Viper - 10 Августа, 2014 - 10:37:15 - перейти к сообщению
Webtest пишет:
только такой вопрос, у меня в БД установлены значения для телефона - bigint, а для даты - date, поэтому если туда вставляешь пустоту '', то выскакивает ошибка: Incorrect date value: '' for column 'BirthDate' at row 1, как от неё избавится?
Какие есть стандарные значения NULL для date и bigint?!

Жирно однако для телефона bigint. А если + понадобится указать?
NOT NULL для чего?
BirthDate 0000-00-00 00:00:00 тяжело наверное поставить?
7. Webtest - 10 Августа, 2014 - 12:07:20 - перейти к сообщению
Viper, какой тогда тип переменных указывать для телефона?
Если ставить int(11), почему-то 11 значное число записывается неверно.
8. tuareg - 10 Августа, 2014 - 12:58:39 - перейти к сообщению
Для № телефона ИМХО вполне хватит varchar

 

Powered by ExBB FM 1.0 RC1