我的关联数组是多维的,我无法弄清楚原因。 PHP

时间:2012-10-03 16:31:04

标签: php arrays associative

大家好。我目前正在开发一个处理用户登录的登录类。我通过使用以下代码将其作为对象创建,从数据库中获取我的数组列表:

 $dBquery = new Selection();
 $dBquery->setUpSelection($sqlConstructor);
 $sqllogin = $dBquery->sQLResults();
 print_r($sqllogin);

来自print_r,这就是回归:

Array (
    [0] => Array (
        [0] => 1
        [uSID] => 1
        [1] => 0
        [level] => 0
        [2] => a
        [Username] => > a
        [3] => a
        [password] => a
        [4] => a
        [email] => a
        [5] => 0
        [lockedID] => 0
    )
)

现在,从它的外观来看,它是一个数组中的数组,这有点令人困惑,因为创建这个数组的代码没有发起(我可能是错的,不幸的是,我需要指针) 。设置数组的代码是:

private function selectAndQuery() {
        //Select query with AND
        $sql2 ="SELECT * FROM ".$this->table." WHERE ".$this->column."='".$this->where."' AND ".$this->andColumn."='".$this->sqlAnd."'  ";
        $a = mysql_query($sql2) or die(mysql_error());      
        //get number of rows to determine if there are any results
        if (mysql_num_rows($a) < 1) {
                    //TO DO no results returned.
            $this->sQLResults();
        } else {
            //if there's a result store it into an array.
            while ($row = mysql_fetch_array($a)) {
            $this->sqlResultsArray[] = $row; 
            }           
            $this->sQLResults();
        }
    }

所以我向你们提出的问题是,是什么导致阵列变得尺寸化,我该怎么办才能阻止它呢?我知道我可以从多维数组中提取信息,但我试图让事情变得尽可能简单。

非常感谢任何帮助。 非常感谢。

4 个答案:

答案 0 :(得分:1)

$this->sqlResultsArray[] = $row; //This is causing you to get multidimensional array
since  mysql_fetch_array returns an array.So if you are sure that you will get only one
row.you can use below given mehod instead
if(mysql_num_rows() = 1){$this->sqlResultsArray  = mysql_fetch_array($a);}

答案 1 :(得分:0)

您正在使用mysql_fetch function_array()函数,该函数将数据行作为数组返回。然后将此数组插入到结果数组中,所以......是的...多维因为你以这种方式获取/构建它。

答案 2 :(得分:0)

    while ($row = mysql_fetch_array($a)) {
    $this->sqlResultsArray[] = $row; 

$ row是一个数组。您将此添加到sqlResultsArray。

答案 3 :(得分:0)

您的选择只是返回与查询参数匹配的所有行的数组,因此在索引0处您将拥有第一行,索引1处于第二行,依此类推。

如果你知道最多会有一个结果,你可以这样做:

$sqllogin = $dBquery->sQLResults();
$sqllogin = $sqllogin[0];