2014-10-04 128 views
-1

我希望我的PHP检查mysql数据库中的时间是否相同,如果不是,它将被更改。PHP查询时间()表格mysql

这是我得到:

<?php 
$last_time_check=mysqli_query($con,"SELECT `time` FROM `servervars`"); 
if((time()-$last_time_check) >=1) 
{ 
    mysqli_query($con, 'UPDATE `servervars` SET `time`='.$time.' WHERE ID=1'); 
} 
?> 

$ con是到数据库的连接。
当前值servervars“时间”:1412448339
价值“ID”是1

我做错了什么,但我只是找不到地方它会错了。

的修复

我已经删除了变量$ last_time_check,只检查,如果时间能得到改变。如果发生这种情况,它会发送另一条消息给客户端。

mysqli_query($con, 'UPDATE `servervars` SET `time` = UNIX_TIMESTAMP() WHERE ID = 1 AND UNIX_TIMESTAMP() - `time` >= 1'); 
    if ($con->affected_rows) 
    { 
     // at least 1 second has elapsed, do stuff 
    } 
+0

是的第二个查询甚至执行? – Mike 2014-10-04 18:57:04

+0

那么......第一个问题是在if语句中。第二个是第二个查询。我只是不知道如何解决它:/ – Remco 2014-10-04 19:10:10

+0

[mysql_query](http://php.net/manual/en/mysqli.query.php)返回一个[mysql_result](http://php.net/manual /en/class.mysqli-result.php)对象,而不是实际的结果。这就是为什么你的if语句没有按预期工作。 – Mike 2014-10-04 19:14:31

回答

1

MySQL有一个相当于time(),其功能UNIX_TIMESTAMP()。不同的是,它可能需要DATETIME作为参数将其转换为UNIX time,但是如果不带参数使用,则与UNIX_TIMESTAMP(NOW())相同。

UPDATE servervars SET time = UNIX_TIMESTAMP() WHERE ID = 1 

更新

确定,所以有关的其他问题。你做错了一切。 mysqli_query不直接返回值。要获取的time从数据库中的值,则需要3个步骤:

$result = $con->query('SELECT `time` FROM `servervars` WHERE ID = 1'); // fetch result set 
$row = $result->fetch_row(); // fetch a row from the result set, as an array 
$last = $row[0]; // get the first element from the row you just fetched 

通知$con->query()可以失败,如果那里有与连接,数据库,表,或查询语法本身,$result->fetch_row()问题可能会失败如果查询没有结果。在继续下一步之前,您应该验证它们。

或者,你可以这样做:

$con->query('UPDATE `servervars` SET `time` = UNIX_TIMESTAMP() WHERE ID = 1 AND UNIX_TIMESTAMP() - `time` >= 1'); 
if ($con->affected_rows) 
{ 
    // at least 1 second has elapsed, do stuff 
} 

这样,我们缩短了您的解决方案,以一个单一的查询,可更新字段如果有必要,并报告,它发生或不..

+0

好的,谢谢。但是这个问题从if语句开始。注意:mysqli_result类的对象无法在第5行的C:\ xampp \ htdocs \ test.php中转换为int。 – Remco 2014-10-04 18:59:36

+0

那是因为'mysqli_query()'直接返回'mysqli_result'的一个实例,而不是字段'time'的值。您仍然必须使用'mysqli_fetch_row'来阻止所选行的值。 – Havenard 2014-10-04 19:02:10

+0

你可能会为我更新你的答案到正确的版本吗?因为我真的不是他最好的人。我只需要看看它是如何工作的。 – Remco 2014-10-04 19:05:54