好的,所以我有一些像这样编写的PHP代码:
database.php中
<?php
class Database
{
protected $__link;
public function __construct()
{
$this->__link = mysqli_connect("localhost", "db", 'pw','user');
}
public function getUsernameForBot($id)
{
if (mysqli_ping($this->__link)) {
printf ("Our connection is ok!\n");
} else {
printf ("Error: %s\n", mysqli_error($this->__link));
}
//Get list of used usernames.
$__query = "SELECT *
FROM users
WHERE users.user_id NOT IN
(
SELECT bot_uname
FROM bots
)" or die(mysqli_error($this->__link));
$__result = $this->__link->query($__query);
echo $this->__link->error;
$__usernames = array();
while ($__row = $__result->fetch_assoc()) {
array_push($__usernames,$__row);
}
foreach($__usernames as &$_user)
{
//TODO: do some checking on the users time.
$_userid = $_user['user_id'];
$__query = "UPDATE bots
SET bot_uname = $_userid
WHERE bot_id = $id;" or die(mysqli_error($this->__link));
$__result = $this->__link->query($__query);
echo $this->__link->error;
return $_user['user_name'] . "/" . $_user['user_pass'];
}
}
public function closeConn()
{
$this->__link->close();
}
}
$mydb = new Database();
?>
我有2个MySQL数据库列出如下:
机器人数据库
int(11) int(11)
bot_id bot_uname
0 -1
和用户数据库
int(11) varchar(32) varchar(32)
user_id user_name user_pass
0 someuser somepass
并且在另一个php文件中有一些像这样写出的东西。
的index.php
<?php
include("Database.php");
echo $mydb->getUsernameForBot(3);
$mydb->closeConn();
?>
现在预期的结果是网页看起来像someuser / somepass 并且改变了机器人数据库的内容以反映它正在使用该用户名。 它的工作原理。有时。
我不知道为什么,但有时它会起来停止工作。 没有更改代码,没有。 你可以看到我包括一个连接测试,看看我的链接是否在我使用它之前被关闭了,不是。
我也有错误输出来检查是否有任何mysql错误。 有同意。
我检查了查询的返回大小,有时是正确的数量,有时是0;
iv重启apachi和mysql。 没有变化。
我非常沮丧地一遍又一遍地检查我的代码,看它工作,然后几分钟后,它就会停止。没有警告。没什么。编辑::删除;;在查询中,没有变化。
编辑::尝试将事物从静态变为非静态,无变化。
任何人都有一个太棒了?
答案 0 :(得分:0)
这似乎是wamp本身的问题,在重新安装wamp后,问题不再发生。