2016-07-17 16 views
-2

私はこのクエリを持っている:mysql now()の代わりにdatetimeを使用しますか?

$stmt = $mysqli->prepare(" 

SELECT id, titulo 
FROM posts WHERE 
data < DATE_SUB(NOW() , INTERVAL 140 MINUTE) 
AND 
CURDATE() = DATE(data) 
ORDER BY RAND() limit 1 

"); 
$stmt->execute(); 

の代わりに、今()私はどんなアイデアがどのように私はこれを使用することができ、PHPでのdatetimeを使用したいですか?

+2

確かに、あなたは他のどのような日付パラメータをバインドすることもできますが、私は強くこれをやっていないお勧めします。データベースサーバーで日時を設定することで、時間が常に同期していることを確認するのが簡単になります。理論的には、PHPサーバーとMySQLサーバーの時計は同じでなければなりません。なぜあなたはこれをしたいのですか? – Brad

+3

可能な[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – FirstOne

+0

@FirstOne可能性は低いです...可能性が高いです。 :-) $ 2はこれが日付の書式設定の問題になると言います。しかし、今のところ疑念の恩恵を与える。 – Brad

答えて

1

はい、あなたはバインドパラメータとしてSQL文にPHP変数を注入することができます

$stmt = $mysqli->prepare(" 
    SELECT id, titulo 
    FROM posts WHERE 
    data < DATE_SUB(? , INTERVAL 140 MINUTE) 
    AND DATE(data) = DATE(?) 
    ORDER BY RAND() LIMIT 1"); 
$curdatetime = date("Y-m-d H:i:s"); 
$stmt->bind_param("ss", $curdatetime, $curdatetime); 
$stmt->execute(); 
関連する問題