Как добавить метку даты и времени в INSERT через PHP с mySQL? - PullRequest
1 голос
/ 25 сентября 2011

У меня есть скрипт вставки с MySQL. Мне нужно указать дату и время создания записи в столбце «add_time».

Может кто-нибудь показать мне, как изменить мой существующий скрипт для этого? Нужен ли отдельный скрипт PHP?

Я бы хотел, чтобы дата появлялась в стандартном бланке: 25.09.11 6:54

<?
  $host="XXXXXXXXXXX";
  $username="XXXXXXX";
  $password="XXXXXXX";
  $db_name="naturan8_hero";
  $tbl_name="cartons_added";

  mysql_connect("$host", "$username", "$password") or die("cannot connect");
  mysql_select_db("$db_name")or die("cannot select DB");

  $order = "INSERT INTO cartons_added (
      type,
      part_no,
      add_type,
      add_qty,
      add_ref,
      add_by,
      add_notes
    ) VALUES (
      '$_POST[type]', 
      '$_POST[part_no]', 
      '$_POST[add_type]', 
      '$_POST[add_qty]', 
      '$_POST[add_ref]', 
      '$_POST[add_by]', 
      '$_POST[add_notes]'
    )";

  $result = mysql_query($order);

  if ($result) {
    $part_no = $_REQUEST['part_no'] ;
    $add_qty = $_REQUEST['add_qty'];
    header("location: inv_fc_add_success.php?part_no=" . urlencode($part_no) . "&add_qty=" . urlencode($add_qty));
  }
  else {
    header("location: inv_fc_add_fail.php");
  }
?>

Ответы [ 4 ]

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

Вам вообще не нужно вставлять данные в этот столбец из PHP:

Столбцы TIMESTAMP и DATETIME могут автоматически инициализироваться и обновляться до текущей даты и времени (то есть текущей отметки времени).

Поэтому измените определение столбца add_time на

add_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP

, и тогда он будет автоматически заполнен для вас при вставке новой строки

См.: MySql Руководство по инициализации меток времени

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

Вы установили столбец "add_time" в вашей базе данных?Это формат DATETIME?

В этом случае вы можете просто изменить свой запрос следующим образом:

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

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

Хотя вы должны знать, что выполнение таких запросов опасно, поскольку вы доверяете пользователювводить только хорошие вещи!Google "SQL-инъекция", чтобы узнать больше об этом, mysql_real_escape_string () тоже.

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

Мне нравится ответ Сэма, так как он лучше - в качестве альтернативы, однако, вы можете использовать date("m/d/Y H:i A"); в соответствии с вашими требованиями - т.е. будет выводиться ММ / ДД / ГГГГ ЧЧ: ММ AM / PM. Хотя, если вы используете метод Сэма, он потребует меньше кода, но вам нужно будет преобразовать его, чтобы получить желаемый формат.

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

Добавьте столбец 'time' в таблицу 'cartons_added'.

И используйте это как заказ

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

  VALUES
  ('$_POST[type]', 
  '$_POST[part_no]', 
  '$_POST[add_type]', 
  '$_POST[add_qty]', 
  '$_POST[add_ref]', 
  '$_POST[add_by]', 
  '$_POST[add_notes]',
  '".time().")";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...