这是我的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‘'two’(列名)?因为它将是22,如果只包括它们的话。
但是它不应该包括表的列部分,因为它们是标题,对吗?请帮我解决这些问题,我将不胜感激
另外,请给我一个链接或实现11的方法作为结果
发布于 2011-10-25 03:37:00
默认情况下,mysql_fetch_array()返回组合的关联和索引数组结构。
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发布于 2011-10-25 03:38:59
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
发布于 2011-10-25 03:37:25
如果您查看mysql_fetch_array的文档,您将看到第二个参数:
$result_type = MYSQL_BOTH这意味着,函数也会返回带有关联键和数值键的合并数组。
所以你有两倍的数据。
您可以使用以下命令来避免它:
$row = mysql_fetch_array($result, MYSQL_ASSOC);或者只是:
$row = mysql_fetch_assoc($result);https://stackoverflow.com/questions/7880937
复制相似问题