web-dev-qa-db-fra.com

Comment insérer l’horodatage actuel dans la base de données MySQL en utilisant une requête PHP insert)

Dans ma base de données MySQL, j'ai une table avec une structure

username - varchar
insert_time - timestamp

Cette table a été créée en MySQL avec l’outil phpMyAdmin et pour le insert_time colonne, j'ai mentionné la valeur par défaut comme 0000-00-00 00:00:00.

Maintenant, le problème est que je dois mettre à jour cette valeur par défaut avec l’horodatage actuel ultérieurement, en utilisant un script PHP.

J'ai essayé de faire ce qui suit PHP code:

$update_query = 'UPDATE db.tablename SET insert_time=now() '.
                'WHERE username='.$somename;

Lorsque le script PHP est exécuté, il échoue et ne peut rien insérer dans la base de données.

Qu'est-ce que je fais mal?

41
arun nair

Quel message d'erreur recevez-vous?

Je suppose que votre erreur réelle est due au fait que votre variable php n’est pas entourée de guillemets. Essaye ça

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" .$somename . "'"; 
53
Ash Burlaczenko

Votre utilisation de now () est correcte. Toutefois, vous devez utiliser un type de guillemets pour toute la requête et un autre pour les valeurs.

Vous pouvez modifier votre requête pour utiliser des guillemets doubles au début et à la fin et des guillemets simples autour de $somename:

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='$somename'";
13
George Cummins

J'ai oublié de mettre la variable dans l'instruction SQL sans les guillemets.

 $update_query = 
      "UPDATE db.tablename SET insert_time=NOW() WHERE username='" .$somename."'";
9
Laurence Burke

Ce format est utilisé pour obtenir l’horodatage actuel et est stocké dans mysql

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

$update_query = "UPDATE db.tablename SET insert_time=".$date." WHERE username='" .$somename . "'"; 
8
Kalaivani M

N'aime aucune de ces solutions.

voici comment je le fais:

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" 
            . sqlEsc($somename) . "' ;";

alors j'utilise ma propre fonction sqlEsc:

function sqlEsc($val) 
{
    global $mysqli;
    return mysqli_real_escape_string($mysqli, $val);
}
1
redux

Au lieu de NOW(), vous pouvez également utiliser UNIX_TIMESTAMP():

$update_query = "UPDATE db.tablename 
                 SET insert_time=UNIX_TIMESTAMP()
                 WHERE username='$somename'";

Différence entre UNIX_TIMESTAMP et NOW () dans MySQL

0
simhumileco