-1

ホスティングサイトに自分のWebサイトがあり、許可されているCPU使用率を超えていることを除いて、すべてが正常に機能していました。WebサイトとデータベースをWAMPがインストールされているローカルマシンに移行しました。

古いホスト: Apacheバージョン 2.2.23PHP バージョン 5.3.18MySQL バージョン 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を使用するか、手動で日時を入力すると、これが発生することに注意してください。したがって、ここではおそらく原因ではありません。

4

2 に答える 2

0

.1。また、手動で日付を手動で入力してみました。であり、それも正しく返されます。

.2。bind_paramを使用するか、手動で日時を入力すると、これが発生することに注意してください。したがって、ここではおそらく原因ではありません。

...それぞれに矛盾しているように見えますね?

1991-09-2601:25:10から経過した時間と15秒には若干の違いがあるようです。このような厳しい条件を満たしている場合は、データを再確認する必要があると感じています。

于 2012-12-28T05:24:01.017 に答える
0

私はこの問題を自分で修正しました。$ currentTime2から時間をエコーし​​た後、5時間先であることに気付きました。私はUTC-0:500の時間にいるので、date.timezoneの行にあるphp.iniファイルを変更しました。

date.timezone = "America/New_York"

于 2012-12-28T14:47:23.720 に答える