2017-06-24 2 views
0

Ich versuche, Daten von PDO Abfrage in einem Array wie folgt zu speichern.PDO-Abruf gibt leere erste Zeile zurück

$array[] = array(); 
$query = "SELECT m.fac_id, m.tnc_id FROM `CCF` m 
     INNER JOIN `CCF-1` f ON f.fac_id = m.fac_id 
     WHERE f.form_id = :id"; 
$stmt = $con->prepare($query); 
$stmt->execute(array('id' => $ccf_id)); 

if ($stmt->rowCount() > 0) { 
    while ($obj = $stmt->fetch(PDO::FETCH_ASSOC)) { 
      $array[] = [$obj['tnc_id'], $obj['fac_id']]; 
    } 
    return $array; 
} else { 
    return null; 
} 

Es gibt zwei Probleme:

1), wenn die Tabelle leer ist, mit $stmt->fetch(), ohne vorher zu überprüfen, ob $stmt->rowCount() > 0 ein leeres Array Element zurückgibt, dh [[]], wenn das, was ich brauche [] oder ein leeres Array ist .

2) daher habe ich eine if-Anweisung $stmt->rowCount() > 0 hinzugefügt, so dass eine leere Tabelle [] zurückgibt, die funktionierte. Nun haben jedoch nicht leere Tabellen einen ersten Wert, der leer ist, d. H. [[],[1,2],[3,4]...], was den späteren Teil meines Codes durcheinander bringt.

Wie stelle ich sicher, dass der Ausgang entweder [] oder [[1,2],[3,4]...] ist?

Antwort

2

ändern

$array[] = array(); 

zu

$array = array(); 

Die [] nach $array bedeutet, dass $array ein Array sein und der erste Index existiert (via [] angelegt) wird eine array() sein.

+0

Vielen Dank! Ich wusste, dass es ein dummer Fehler wie dieser sein musste. – revvy

+0

@revvy kein Problem, ich bin froh, dass ich Ihnen helfen konnte. –

+0

akzeptieren Sie die Ans und Upvote, wenn Sie können @ revvy – Exprator

Verwandte Themen