ホスティングサイトに自分の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を使用するか、手動で日時を入力すると、これが発生することに注意してください。したがって、ここではおそらく原因ではありません。