2016-04-27 16 views
2

Ich muss etwas älteren PHP-Code debuggen und ich habe einen echten Puzzlespieler getroffen.Warum würde mysqli_fetch_assoc ein leeres Objekt zurückgeben?

Eine Methode durchläuft jede Zeile einer MySQL-Tabelle und fügt die Zeile zu einem Array hinzu.

Leider gibt die Methode ein vollständig leeres Objekt zurück, sodass die HTTP-Antwort keine Länge hat. Es scheint, dass eine bestimmte Zeile in der MySQL-Tabelle dieses Problem verursacht, wenn mysqli_fetch_assoc aufgerufen wird. Ich habe es auf Zeile 1251 eingegrenzt, indem ich den Testcode unten hinzugefügt habe.

$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 

Wenn ich einen CSV-Dump der Datentabelle erzeugen, sehen die Daten ziemlich harmlos - Reihe 1251 die Leitung 94340 im Snippet unten beginnen:

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,,,,,,,,,,,,,,,, 

Was mysqli_fetch_assoc verursachen könnte scheinbar auf diese Weise "aussteigen" und nichts zurückgeben? Wie würde ich das überhaupt debuggen?

+1

Was genau ist in $ Zeile auf diesem Datensatz? – Quassnoi

+0

Es kann nicht verwandt sein, aber Ihre Zeile '94340' sieht aus wie es irgendwo ein paar Anführungszeichen vermisst. Kannst du 'print_r ($ row)' für '1251' noch posten und die Ergebnisse posten? – Ben

Antwort

0

Die MySQL-Zeile enthielt einige nicht druckbare Zeichen, die durch Verbinden mit dem Server über den MySQL-Client und Ausführen eines Handbuchs SELECT in der Zeile ermittelt wurden.

`SELECT ColumnName FROM TableName WHERE Id = SomeID` 

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

Die zwei Fragezeichen waren das Werbegeschenk.

Immer noch keine Ahnung, warum mysqli_fetch_assoc war unglücklich, obwohl.

Verwandte Themen