2017-02-12 3 views
1

Мне просто интересно, должен ли я использовать запрос Now() внутри, или я должен сделать массив для этого? Это мой код и он работает, но не уверен в этом ..Как использовать Now() с PDO

$STH = $DBH->prepare('INSERT INTO users SET username = :username, password = :password, email = :email, joined = NOW(), usergroup = :usergroup, favourite_genre = :genre'); 
$STH->execute(array(
    ':username' => $username, 
    ':password' => $password, 
    ':email' => $email, 
    ':usergroup' => 0, 
    ':genre' => $_POST['genre'] 
)); 
+0

* "Должен ли я использовать запрос Now() внутри, или я должен сделать массив для этого?" * - «массив», как и почему? –

+0

'' Я должен сделать массив для этого? ''- Какой массив? О чем вы говорите? Если этот код работает, то в чем проблема? – David

+0

Мне было просто интересно, нужно ли мне что-то вроде: join =: joindate, а затем определить joansate inside array. – dovlapsy

ответ

1

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

Оба метода будут успешно создавать временную метку.

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

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

0

Не должен ли запрос быть в этой форме?

$data = array(
     "email" => $email, 
     "password" => $password, 
     "salt"  => $salt, 
     "ingame" => $ingame, 
     "kiosk" => $kiosk, 
); 
$dbh->query("INSERT INTO ?n SET reg = NOW(), ?u","users", $data); 
0

Поля Datetime не принимают значения по умолчанию, они не являются полями метки времени.

Так я это сделать:

<?php 

$STH = $DBH->prepare('INSERT INTO users SET username = :username, password = :password, email = :email, joined = :joined, usergroup = :usergroup, favourite_genre = :genre'); 
$STH->execute(array(
    ':username' => $username, 
    ':password' => $password, 
    ':email' => $email, 
    ':joined' => date ("Y-m-d H:i:s", time()); 
    ':usergroup' => 0, 
    ':genre' => $_POST['genre'] 
)); 

?> 

Увидимся мой друг!