Получение метки времени из строки mysql при создании новой записи строки - PullRequest
0 голосов
/ 24 декабря 2011

Это действительно?

    <?php
        $timestamp = mysql_query("INSERT INTO column1 (entry1, entry2) 
                                  VALUES ('$entry1', '$entry2') 
                                  AND SELECT timestamp");
    ?>

отметка времени - это столбец mysql, который генерирует отметку времени при создании строки.

например. - мне нужно указать создание строки "timestamp"? (Я думаю, что все в порядке, настроен сделать это самостоятельно) -можно ли выполнить эти два действия в рамках одного запроса? если нет, как я могу это сделать? Я хочу убедиться, что я получаю метку времени, поскольку позже я использую ее в коде в качестве уникального идентификатора для этой записи. как я могу иначе получить это? (при условии, что могут быть записи, которые являются множественными и похожими во многих других записях строки).

Спасибо!

Ответы [ 4 ]

2 голосов
/ 24 декабря 2011

Я зависит от того, для чего вам нужна информация. Если вам нужно, чтобы оно было сохранено в отношении других строк / сущностей, и вы хотите, чтобы оно было согласованным, я бы сохранял дату в PHP (возможно, один раз для каждого запроса в веб-приложении), а затем использовал бы ее повсюду, например,

$currentTimestamp = time();
$timestamp = mysql_query("INSERT INTO column1 (entry1, entry2, timestamp_col) 
                              VALUES ('$entry1', '$entry2', $currentTimestamp);

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

Даже если вы не сохраняете его для чего-либо еще, вы все равно можете использовать этот метод, если вам нужно получить эту информацию, поскольку единственный другой способ - это два запроса, и это, скорее всего, будет более эффективным.

Это не значит, что никогда не имеет смысла автоматически заполнять поле даты MySQL, поскольку вы просто регистрируете эту информацию для последующего извлечения, тогда, конечно, имеет смысл сделать это в MySQL.

1 голос
/ 24 декабря 2011

Нет, это неверный синтаксис.

Одной из альтернатив является присвоение переменной now () переменной и использование ее в столбце метки времени вместо автоматически сгенерированного значения.

set @now = now();
insert into your_table (timestamp_column) values (@now);
select @now();
1 голос
/ 24 декабря 2011

Это недопустимое утверждение mysql.В качестве опции вы можете использовать функцию PHP вместо этого.

$sql = "INSERT INTO column1 (entry1, entry2) VALUES ('$entry1', '$entry2')";
$timestamp = mysql_query($sql) ? time() : null;
0 голосов
/ 07 мая 2012

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

$query = mysql_query('INSERT INTO my_table("username","password") VALUES("falcon","test") ');
$last_id = mysql_insert_id($query);  // This gets your id of the row inserted by $query
$timstamp = mysql_query('SELECT timestamp FROM my_table where id = "'.$last_id.'"')
...