-2

过去一天,这个问题一直困扰着我。这是代码:

public function getUserCredits()
{
    $dbl = new databaseManager();
    $dbl->connect_simp();
    $ret = $dbl->queryDB("SELECT * FROM users WHERE `USER_ID` = ".$this->userId);
    $this->userCredits = $ret['USER_CREDITS'];

    return $this->userCredits;
}

现在,当我尝试运行此代码时,出现undefined offset错误。当我第一次看到它时并没有什么奇怪的,但现在它越来越多地发生了,我不知道为什么。

我可以使用它var_dump();var_export();它可以很好地显示返回数组的内容。

编辑:

    array(1) {
  [0]=>
  array(50) {
    ["USER_ID"]=>
    string(10) "0000000001"
    [0]=>
    string(10) "0000000001"
    ["USER_USERNAME"]=>
    string(8) "SampleUsername"
    [1]=>
    string(8) "SampleUsername"
    ["USER_PASSWORD"]=>
    string(32) "5f4dcc3b5aa765d61d8327deb882cf99"
    [2]=>
    string(32) "5f4dcc3b5aa765d61d8327deb882cf99"
    ["USER_EMAIL"]=>
    string(0) ""
    [3]=>
    string(0) ""
    ["USER_LEGION"]=>
    string(1) "1"
    [4]=>
    string(1) "1"
    ["USER_ENERGY"]=>
    string(4) "2812"
    [5]=>
    string(4) "2812"
    ["USER_MAX_ENERGY"]=>
    string(4) "2812"
    [6]=>
    string(4) "2812"
    ["USER_SHIELD"]=>
    string(2) "20"
    [7]=>
    string(2) "20"
    ["USER_MAX_SHIELD"]=>
    string(2) "20"
    [8]=>
    string(2) "20"
    ["USER_HULL"]=>
    string(2) "60"
    [9]=>
    string(2) "60"
    ["USER_MAX_HULL"]=>
    string(2) "60"
    [10]=>
    string(2) "60"
    ["USER_CREDITS"]=>
    string(19) "9223372036854775807"
4

4 回答 4

0

尝试

$ret[0]['USER_CREDITS']

代替

$ret['USER_CREDITS']
于 2013-09-07T19:52:58.677 回答
0

作为您的var_dump($ret),尝试此分配用户信用,否则如果未设置,则分配0值。

if(isset($ret[0]['USER_CREDITS'])){
    $this->userCredits = $ret[0]['USER_CREDITS'];
}
else{
    $this->userCredits = 0;
}
于 2013-09-07T19:54:13.437 回答
0

您必须先获取一行(我假设您 extend mysqli)。

$result = $dbl->queryDB("SELECT * FROM users WHERE `USER_ID` = ".$this->userId);
$row = $dbl->fetch_assoc($result) ;

$this->userCredits = $row['USER_CREDITS'];
于 2013-09-07T19:48:20.480 回答
0

首先你应该看结果记录。当您在获取的数据库记录数组中获取详细信息时,它是带有数字键的数组格式。使用@AbuOmar 所说的话。

于 2013-09-07T19:57:00.320 回答