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?
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 . "'";
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'";
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."'";
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 . "'";
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);
}
Au lieu de NOW()
, vous pouvez également utiliser UNIX_TIMESTAMP()
:
$update_query = "UPDATE db.tablename
SET insert_time=UNIX_TIMESTAMP()
WHERE username='$somename'";