我不得不调试一些遗留的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
明显“拯救”的原因是什么?这样回来什么都没有?我怎么会调试这个?
答案 0 :(得分:0)
MySQL行包含一些不可打印的字符,通过MySQL
客户端连接到服务器并在该行上运行手册SELECT
来确定。
`SELECT ColumnName FROM TableName WHERE Id = SomeID`
======+==========+===========
ColumnName +========+========
=============================
http://some.site.com/??
=============================
这两个问号是赠品。
仍然不知道为什么mysqli_fetch_assoc
对此不满意。