例如,如果我有下表:
+----+---+----------+
| 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 |
+-------+-------+
但它不起作用。
¿我该怎么做才能使它发挥作用?
感谢
答案 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"
)