为什么算数会返回22而不是11?

时间:2011-10-24 19:34:42

标签: php

这是我的php脚本

$result = mysql_query("SELECT * FROM photos WHERE perID=2");
$row = mysql_fetch_array($result);
$a = count($row);                     // or sizeof($row)
echo $a;       //outputs 22 but i expect it to be 11 but why does it output 22 ?

这是mysql中的数据。

perID   one    two   three   four    five    six    sev    eit   nine  ten
  2    1.jpg  2.jpg  3.jpg   4.jpg   5.jpg  6.jpg  7.jpg  8.jpg  9.jpg 10.jpg

我预计它会是11但令人惊讶的是它22。有人能解释我为什么吗?它在count函数中是否也包含'one''2'(列名)?因为只有它包括它们才会是22。

但它不应该包含表的列部分,因为它们是标题对吗?请帮助我这些任何帮助非常感谢

也请给我一个链接或结果达到11的方式

5 个答案:

答案 0 :(得分:7)

mysql_fetch_array()默认返回一个组合的关联AND索引数组结构。

SELECT a,b,c FROM table

将生成

的行数组
$row = array(0 => 'value of a', 'a' => 'value of a', 1 => 'value of b', etc...);

您可以通过指定可选的fetch_mode参数强制它执行一个或另一个:

$row = mysql_fetch_array($result, MYSQL_BOTH); // default mode
$row = mysql_fetch_array($result, MYSQL_ASSOC); // same as mysql_fetch_assoc: associative array
$row = mysql_fetch_array($result, MYSQL_NUM); // same as mysql_fetch_row: indexed array

答案 1 :(得分:1)

mysql_fetch_array每列返回2列。例如:

array(
    [0] => '1.jpg',
    ['one'] => '1.jpg'
    etc..

如果您执行mysql_query($query,MYSQL_ASSOC),则只会获得['one']

请查看此文档:http://nl3.php.net/manual/en/function.mysql-fetch-array.php

答案 2 :(得分:0)

如果你查看mysql_fetch_array的文档,你会看到第二个参数:

$result_type = MYSQL_BOTH

这意味着,函数也会返回带有关联键和数字键的合并数组。

所以你的数据翻了一倍。

你可以通过以下方式避免它:

$row = mysql_fetch_array($result, MYSQL_ASSOC);

或只是:

$row = mysql_fetch_assoc($result);

答案 3 :(得分:0)

魔术链接:http://php.net/mysql_fetch_array

顺便说一下,你的桌面设置似乎不太合理。

答案 4 :(得分:0)

如果您使用mysql_fetch_assoc(),则只会$row['one']而不会$row[1]