PHP mySQL-您可以返回带有数字索引的关联数组吗? [英] PHP mySQL - Can you return an associated array with a number index?

查看:185
本文介绍了PHP mySQL-您可以返回带有数字索引的关联数组吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的数据库类中有此方法

public function query($queryString)
    {

      if (!$this->_connected) $this->_connectToDb(); //connect to database

      $results = mysql_query($queryString, $this->_dbLink) or trigger_error(mysql_error());

      return mysql_num_rows($results) > 0 ? mysql_fetch_assoc($results) : false;            

    }

这对于返回1行的查询非常有用,但是如何获取返回这样的数组?

$array[0]['name'] = 'jim'
$array[0]['id'] =  120
$array[1]['name'] = 'judith' 
$array[1]['ID'] = 121

现在我知道我可以像这样使用while循环将此数据插入到数组中,但是我想知道PHP是否可以使用内部函数来完成此操作?我无法在文档中找到我想要的东西.

我不想在方法中运行while的原因是因为我要在返回数组时重申该数组,而我宁愿不两次运行结果(出于性能原因)./p>

有没有办法做到这一点?我的一般查询方法设计是否有问题?

非常感谢!

解决方案

public function query($queryString)
    {

        if (!$this->_connected) $this->_connectToDb(); //connect to database

        $results = mysql_query($queryString, $this->_dbLink) or trigger_error(mysql_error());

        $data = array();
        while($row = mysql_fetch_assoc($results))
         {
               $data[] = $row;
         }
        return $data;

    }

这将始终返回一个数组.

我不太清楚这个问题. 如果您真的不想使用循环,那么我可以这样做:

public function query($queryString)
    {

        if (!$this->_connected) $this->_connectToDb(); //connect to database

        return mysql_query($queryString, $this->_dbLink) or trigger_error(mysql_error());

    }

然后在其上循环,但是我只会使用该循环.

I have this method in my db class

public function query($queryString)
    {

      if (!$this->_connected) $this->_connectToDb(); //connect to database

      $results = mysql_query($queryString, $this->_dbLink) or trigger_error(mysql_error());

      return mysql_num_rows($results) > 0 ? mysql_fetch_assoc($results) : false;            

    }

This works great for queries that return 1 row, but how can I get an array returned something like this?

$array[0]['name'] = 'jim'
$array[0]['id'] =  120
$array[1]['name'] = 'judith' 
$array[1]['ID'] = 121

Now I know I could use a while loop to insert this data into the array like so, but I was wondering if PHP could do this with an internal function? I havn't been able to find on the docs what I'm after.

The reason I don't want to run the while within the method is because I am going to reiterate back over the array when it's returned, and I'd rather not run through the results twice (for performance reasons).

Is there a way to do this? Do I have a problem with my general query method design?

Thank you muchly!

解决方案

public function query($queryString)
    {

        if (!$this->_connected) $this->_connectToDb(); //connect to database

        $results = mysql_query($queryString, $this->_dbLink) or trigger_error(mysql_error());

        $data = array();
        while($row = mysql_fetch_assoc($results))
         {
               $data[] = $row;
         }
        return $data;

    }

this will always return an array.

EDIT: I didn't read the question well. If you realy don't want to use the loop then I would do this:

public function query($queryString)
    {

        if (!$this->_connected) $this->_connectToDb(); //connect to database

        return mysql_query($queryString, $this->_dbLink) or trigger_error(mysql_error());

    }

then loop over it, however I would just use the loop.

这篇关于PHP mySQL-您可以返回带有数字索引的关联数组吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆