为什么`mysqli_fetch_assoc`会返回一个空对象?

时间:2016-04-27 23:05:44

标签: php mysql

我不得不调试一些遗留的PHP代码,而且我遇到了一个真正的益智游戏。

一个方法循环遍历MySQL表的每一行,并将该行添加到数组中。

不幸的是,该方法返回一个完全空的对象,因此HTTP响应的长度为零。

当调用mysqli_fetch_assoc时,似乎MySQL表中的一个特定行导致了这个问题。我通过添加下面的测试代码将其缩小到第1251行。

$counter = 0
while ( $row = mysqli_fetch_assoc($findInfo) ) {

  // My Debug Test Code: bail out and return row 1251
  if ($counter ==   1251)
     return $row; // this returns a populated array for all rows except 1251, which is blank

  // Add the row to our array
  array_push($rowArray, $row);

  $counter = $counter + 1
}

// Finally, do something with all the rows
return $rowArray

如果我生成数据表的.CSV转储,则数据看起来相当无害 - 第1251行是下面代码段中的94340行:

94339,"Hills Coaches (Wolverhampton)",,,,,,,,,,,,,,,,
94340,"Hinckley Bus",,"via contact form at www.arrivabus.co.uk/contact-arriva/  ","01455 239329",,,"5 Jacknell Road, Dodwells Bridge Industrial Estate, Hinckley LE10 3BS",,,,,,,,,,www.arrivabus.co.uk/hinckleybus/#http://www.arrivabus.co.uk/hinckleybus/#
94341,Hirethisbus.com,,,,,,,,,,,,,,,,

可能导致mysqli_fetch_assoc明显“拯救”的原因是什么?这样回来什么都没有?我怎么会调试这个?

1 个答案:

答案 0 :(得分:0)

MySQL行包含一些不可打印的字符,通过MySQL客户端连接到服务器并在该行上运行手册SELECT来确定。

`SELECT ColumnName FROM TableName WHERE Id = SomeID`

======+==========+===========
ColumnName +========+========
=============================
http://some.site.com/??
=============================

这两个问号是赠品。

仍然不知道为什么mysqli_fetch_assoc对此不满意。