比较运算符在WAMP上的mysqli prepare语句中无法正常工作

时间:2012-12-28 02:00:54

标签: php mysqli wamp wampserver

我在托管网站上安装了我的网站,一切正常,但我正在查看允许的cpu使用情况。我将我的网站和数据库迁移到我安装了WAMP的本地计算机。

旧主持人: Apache版本 2.2.23 PHP版本 5.3.18 MySQL版本 5.1.66-cll

WAMP: Apache 2.4.2 PHP 5.4.3 MYSQL 5.5.24

出于某种原因,小于和大于比较运算符停止在我的mysqli prepare语句中工作。如果我删除了sql语句的以下部分,那么它就像它应该的那样返回一切正常。我也尝试手动输入日期在哪里?是的,而且也正确地返回。

无法工作 where last_update > ?

工作 where last_update > '1991-09-26 01:25:10'

以下是我的代码:

<?php

session_start();

$output = "You must log in to see users.";

if (isset($_SESSION['status'])){

    $status = $_SESSION['status'];
    $myUsername = $_SESSION['username'];

    if ($status == 1){

        $output = "";

        require_once __DIR__ . '/db_connect.php';
        $mysqli = new DB_CONNECT();

        $currentTime2 = date( 'Y-m-d H:i:s', strtotime('-15 seconds'));

        if ($stmt = $mysqli->prepare("select username from users where last_update > ? order by username")){

            $stmt->bind_param("s", $currentTime2);

            $username = "";

            $stmt->execute();

            $stmt->bind_result($username);

            while ($stmt->fetch()){
                if ($username != $myUsername){
                    $output = $output . "<div class='user'><div class='user-pic'></div><div class='user-name'>" . $username . "</div></div>";
                }
            }

            $stmt->close();

        }
    }
}

echo $output;

?>

我从那个php文件中得到的唯一错误是:

SCREAM: Error suppression ignored for
( ! ) Strict standards: Declaration of DB_CONNECT::connect() should be compatible with mysqli::connect($host = NULL, $user = NULL, $password = NULL, $database = NULL, $port = NULL, $socket = NULL) in C:\wamp\www\db_connect.php on line 31
Call Stack
#   Time    Memory  Function    Location
1   0.0002  254240  {main}( )   ..\onlineUsers.php:0

这是db_connect.php文件:

<?php

class DB_CONNECT extends mysqli{

    function __construct() {

        $this->connect();
    }

    function __destruct() {

        $this->close();
    }

    function connect() {

        require_once __DIR__ . '/db_config.php';

        parent::__construct(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);

        if (mysqli_connect_errno()) {
            printf("connect failed: %s\n", mysqli_connect_error());
            exit();
        }
    }

    function close() {

    }

}

?>

请注意,如果我使用bind_param或只是手动输入日期时间,我会得到这个,所以这可能不是原因。

2 个答案:

答案 0 :(得分:0)

  

0.1。我也尝试手动输入日期在哪里?是的,而且也正确地返回。

     

0.2。请注意,如果我使用bind_param或只是手动输入日期时间,我会得到这个,所以这可能不是原因。

......看起来每个人都有矛盾,呃?

似乎自1991-09-26 01:25:10和15秒之间的时间略有不同。我觉得如果它符合如此严格的条件,你必须仔细检查数据

答案 1 :(得分:0)

我自己已经解决了这个问题。在回复$ currentTime2的时间之后,我注意到将来是5个小时。我在UTC-0:500时间,所以我在date.timezone的行中更改了我的php.ini文件。

date.timezone = "America/New_York"