我正在尝试获取sql查询结果的列数。每当我尝试使用 count($row)
这个表应该只有4个元素,但是它显示了8个元素,而 implode(",",$row)
显示事实上有8个元素,但其输出有点奇怪:
代码片段:
$query = $con->query($sql);
$rows = array();
error_log($sql);
if(!$query){error_log(mysqli_error($con));exit;}
while($row = $query->fetch_array()){
$rows[]=$row;
}
if(count($rows)==0) { echo "101"; exit; }
echo '{"row":[';
foreach($rows as $key=>$row) {
error_log(count($row));
error_log(implode(",",$row));
error_log($row[0]." ".$row[1]." ".$row[2]." ".$row[3]);
}
echo "]}";
结果:
[Tue May 29 13:47:21 2018] 8
[Tue May 29 13:47:21 2018] AFI,AFI,001,001,Pancho,Pancho,a1d7584daaca4738d499ad7082886b01117275d8,a1d7584daaca4738d499ad7082886b01117275d8
[Tue May 29 13:47:21 2018] AFI 001 Pancho a1d7584daaca4738d499ad7082886b01117275d8
如您所见,这八个元素在那里,但它们只是正确输出的副本,由 error_log($row[0]." ".$row[1]." ".$row[2]." ".$row[3]);
.
有人知道php为什么会这样吗?有没有办法在查询行中获得正确的元素数?
3条答案
按热度按时间9rygscc11#
这种行为很好,因为数组同时包含索引号和列名,所以您可以通过以下两种方式方便地访问字段:
$row[0]
或者$row['col_name']
尝试改用rowcount方法。以下是使用mysqli时的代码:ddrv8njm2#
违约行为
fetch_array()
两者的索引都具有列名和数字位置。当你做一个var_dump
在$行中,您将看到类似的内容:bq9c1y663#
您将得到一个数组格式的结果,该格式同时具有编号数组和关联数组。
而这个
仅用于编号数组