我制作了一个非常简单的PHP脚本,它将1增加到我的members表中的洗碗机行。当它看起来像这样时它可以工作:
PHP:
include "admin/vars.php";
//connect to the database
$db = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name);
//Runs when user sends GET
if(isset($_GET['name'])) {
$name = $_GET['name'];
// Increment the dishwasher_count by 1 and update the dishwasher_latest field value of the requested name.
$update = mysql_query("UPDATE members SET dishwasher_count = dishwasher_count + 1 WHERE name='$name';
}
$result = mysql_query("SELECT name, dishwasher_count, dishwasher_latest FROM members ORDER BY dishwasher_count DESC");
while($row = mysql_fetch_assoc($result)){
echo "<h2>" . $row["name"].
" <a id='1' href='./?name=" . $row["name"] . "' class='fa fa-plus-circle' ></a></h2>
<p class='margin'>Urplockningar: "
. $row["dishwasher_count"]. "<br>
Senaste: " . $row["dishwasher_latest"] . "</p>";
}
mysql_close($db);
问题是我希望它还显示最新的增量,我通过使用MySQL中的“TIMESTAMP”和“更新CURRENT_TIMESTAMP”来实现它。但问题是,当更新任何行时,它会更新TIMESTAMP,我只希望它在更新洗碗机更新时将dishwasher_latest更新为当前时间。
我已经尝试过这样做了,但它似乎扼杀了SQL:
$update = mysql_query("UPDATE members SET dishwasher_count = dishwasher_count + 1 WHERE name='$name'; UPDATE members SET dishwasher_latest=now()");
我一直在处理这个问题已经有一段时间了,但无法让它发挥作用。我怎么能让这个工作?
答案 0 :(得分:2)
如果要记录特定列的更改时间,则不能使用timestamp列,即记录中任何字段更改时的记录。
您将datetime字段更新为当前时间的想法很好,只需要处理实施。 mysql_query()不支持在1次调用中执行多个语句。您根本不应该使用mysql _ *()函数,它们已被弃用。
解决方案:
答案 1 :(得分:1)
你在找这样的东西吗?
UPDATE members SET dishwasher_count = dishwasher_count + 1,dishwasher_latest=now() WHERE name="$name";
这只会更新受新时间戳影响的行