【问题标题】:Mysql and php error. Strange query behaviorMysql 和 php 错误。奇怪的查询行为
【发布时间】:2014-11-07 23:27:50
【问题描述】:

好的,所以我写了一些这样的php代码:

数据库.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 并且 bots 数据库的内容被更改以反映它正在使用该用户名。 它有效。有时。

我不知道为什么,但有时它会启动并停止工作。 没有更改代码,什么都没有。 如您所见,我包含了一个连接测试,以查看我的链接是否在我使用它之前被关闭,它不是。

我也有错误输出来检查是否有任何 mysql 错误。 有。

我检查了查询的返回大小,有时是正确的数量,有时是 0;

iv 重新启动了 apachi 和 mysql。 没有变化。

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

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

edit::尝试将事物从静态更改为非静态,没有变化。

有人有遮阳篷吗?

【问题讨论】:

  • 为什么都是static?那是你的问题。
  • 我很确定 $this/self 在静态调用时脱离上下文尝试实例化类
  • @developerwjk 好的,我开始链它不是静态的,
  • @developerwjk 在将所有内容从静态更改为非静态后,工作了 2 分钟,然后再次停止。更新帖子。
  • 停止工作时是否出现错误?如果您通过 apache 调用代码,请检查 apache error.log 文件。

标签: php mysql apache


【解决方案1】:

好像是wamp本身的问题,重新安装wamp后问题就没有了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-16
    • 2011-06-11
    • 1970-01-01
    • 2015-05-13
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-29
    相关资源
    最近更新 更多