使用PHP检索MySQL列的一部分

时间:2010-05-24 19:31:20

标签: php mysql

例如,如果我有下表:

+----+---+----------+
| id | a | position |
+----+---+----------+
| 0  | 0 | 0        |
| 1  | 0 | 1        |
| 2  | 1 | 4        |
| 3  | 1 | 9        |
| 4  | 1 | 6        |
| 5  | 1 | 1        |
+----+---+----------+

我希望得到一个数组,其中包含位置的前100个值,其中a按升序排列,我该怎么做?
我猜是这样的:

$col = mysql_fetch_array( mysql_query('
SELECT `position`
FROM `table`
WHERE `a`="1"
ORDER BY `position` ASC
LIMIT 100
'));

我希望得到以下数组:

+-------+-------+
| index | value |
+-------+-------+
| 0     | 1     |
| 1     | 4     |
| 2     | 6     |
| 3     | 9     |
+-------+-------+

但它不起作用。
¿我该怎么做才能使它发挥作用? 感谢

3 个答案:

答案 0 :(得分:1)

mysql_fetch_array()一次从查询结果中获取一行。要访问所有行,您需要一个循环。有点像...

while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
{
  printf("index: %s  value: %s", $row[0], $row[1]);  
}

我会仔细研究一下:http://php.net/manual/en/function.mysql-fetch-array.php

答案 1 :(得分:0)

好的,有几件事:

在fetch_array中运行mysql_query很奇怪。 Mysql_fetch_array处理查询结果,将结果的各行(如已获取)放入数组中。因此,当你运行它时,如果它运行它,它只会给你第一行,而不是前100行。

其次,引用看起来很奇怪。根据“a”中的数据类型,双引号可能会导致。 (暂时没有使用MySQL,可能是错误的。)

如果我要这样做,我会这样做:

$result = mysql_query("SELECT index, position FROM table WHERE a = 1 ORDER BY position ASC LIMIT 100");

while($col = mysql_fetch_array($result)){
    *do something*
}

*感谢JYelton的查询重新格式化。

答案 2 :(得分:0)

您的查询没问题。

问题是mysql_fetch_array只检索一行。您应该循环所有行并将每个值添加到$col数组。

$result = mysql_query('...');

while($row = mysql_fetch_array($result, MYSQL_NUM))
{
    $col[] = $row[0];
}

现在$col包含以下内容:

Array
(
    [0] => "1"
    [1] => "4"
    [2] => "6"
    [3] => "9"
)