Mysql和php错误。奇怪的查询行为

时间:2014-11-07 23:27:50

标签: php mysql apache

好的,所以我有一些像这样编写的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。 没有变化。

我非常沮丧地一遍又一遍地检查我的代码,看它工作,然后几分钟后,它就会停止。没有警告。没什么。

编辑::删除;;在查询中,没有变化。

编辑::尝试将事物从静态变为非静态,无变化。

任何人都有一个太棒了?

1 个答案:

答案 0 :(得分:0)

这似乎是wamp本身的问题,在重新安装wamp后,问题不再发生。