这是我的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的方式
答案 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)
答案 4 :(得分:0)
如果您使用mysql_fetch_assoc()
,则只会$row['one']
而不会$row[1]
。