Попытка опубликовать дату через php с MySQL ... Нужна помощь - PullRequest
0 голосов
/ 26 сентября 2011

Я пытаюсь опубликовать дату и время, когда создаю новую запись. Запись создана, но в mySQL столбец add_time пуст.

Что с ним не так?

$date = date("Y-m-d G:i:s") ; 

$order = "INSERT INTO cartons_added (add_time, type, part_no, add_type, add_qty, 
add_ref, add_by, add_notes)

VALUES
('$_POST[date]',
 '$_POST[type]', 
 '$_POST[part_no]', 
 '$_POST[add_type]', 
 '$_POST[add_qty]', 
 '$_POST[add_ref]', 
 '$_POST[add_by]', 
 '$_POST[add_notes]')";

 $result = mysql_query($order);

Ответы [ 4 ]

2 голосов
/ 26 сентября 2011

Вы никогда не используете созданную вами переменную $date. Вы, вероятно, хотели использовать это вместо $_POST[date].

1 голос
/ 26 сентября 2011

Я считаю, что вместо:

VALUES
('$_POST[date]',
 '$_POST[type]', 
 '$_POST[part_no]', 
 '$_POST[add_type]', 
 '$_POST[add_qty]', 
 '$_POST[add_ref]', 
 '$_POST[add_by]', 
 '$_POST[add_notes]')";

Вы хотите использовать

// Use your $date variable

VALUES
('$date',
 '$_POST[type]', 
 '$_POST[part_no]', 
 '$_POST[add_type]', 
 '$_POST[add_qty]', 
 '$_POST[add_ref]', 
 '$_POST[add_by]', 
 '$_POST[add_notes]')";

Все это требует значительного лечения для защиты от SQL-инъекций.Самый простой путь - окружить все $_POST переменных в mysql_real_escape_string():

"...
VALUES
('$date',
 '" . mysql_real_escape_string($_POST['type']) ."', 
 '" . mysql_real_escape_string($_POST['part_no']) ."', 
 '" . mysql_real_escape_string($_POST['add_type']) ."', 
 '" . mysql_real_escape_string($_POST['add_qty']) ."', 
 '" . mysql_real_escape_string($_POST['add_ref']) ."', 
 '" . mysql_real_escape_string($_POST['add_by']) ."', 
 '" . mysql_real_escape_string($_POST['add_notes']) ."')";
0 голосов
/ 26 сентября 2011

Вы должны исправить это отверстие для SQL-инъекции:
Есть также синтаксическая ошибка, это не $_POST[add_ref], а $_POST['add_ref']
Вы можете написать '$_POST[name]' (плохо) вместо $_POST['name'], (хорошо) , но не плохая практика.

Измените код на:

$query = "INSERT INTO cartons_added (add_time, type, part_no, add_type, add_qty, 
                                     add_ref, add_by, add_notes)
    VALUES
    ('$date',
     '{mysql_real_escape_string($_POST['type'])}', 
     '{mysql_real_escape_string($_POST['part_no'])}', 
     '{mysql_real_escape_string($_POST['add_type'])}', 
     '{mysql_real_escape_string($_POST['add_qty'])}', 
     '{mysql_real_escape_string($_POST['add_ref'])}', 
     '{mysql_real_escape_string($_POST['add_by'])}', 
     '{mysql_real_escape_string($_POST['add_notes'])}') ";

Никогда и никогда не вставляйте $_POST, $_GET, $_SESSION и подобные вещи прямо в запрос.
См .: Как работает SQL-инъекция из комикса XKCD "Таблицы Бобби"?

0 голосов
/ 26 сентября 2011

Попробуйте это:

date('Y-m-d H:i:s');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...