2016-07-07 9 views
0

Ich habe ein Problem mit meinem vorbereiteten SELECT-Ergebnis-Array, das nicht die tatsächlichen Spaltenwerte enthält. Ich weiß, wie man Daten von einer SQL-Datenbank mit Java bekommt, aber ich habe Probleme mit PHP PDO. Ich bin mit einer entfernten AWS-Datenbank verbunden, von der ich weiß, dass sie funktioniert. Hier ist der Code:PHP PDO MySQL Array gibt nur Spaltennamen zurück

 $conn = new PDO($dsn, $username, $password); 
     //echo "Test"; 

Hier möchte ich alle die Daten der Spalte bekommen

 $sth = $conn->prepare("SELECT 'id', 'short-des', 'full-des', 'image-urls', 'date-created' FROM projects"); 
     $sth->execute(); 

Ich habe PDO :: platziert FETCH_BOTH, PDO :: FETCH_ASSOC, PDO :: FETCH_COLUMN. Das Ergebnis am Ende dieses Beitrags ergibt sich daraus, dass ich das Feld fetchall() leergebe. Wenn ich einen der PDO :: -Stile einfüge, werden keine Werte zurückgegeben. Ich habe andere Szenarien wie var_dump zusammen mit den Stilen in der fetch-Anweisung, die tatsächliche Ergebnisse liefern, aber keine tatsächlichen Werte, die die Spalten enthalten.

 $row = $sth->fetchAll(); 

     echo "<br>" . $row[0] . "<br>"; 
     echo "<br>" . $row[1] . "<br>"; 

     $column1 = $row[0]; 
     $column2 = $row[1]; 

     for($i = 0; $i < 5; $i++){ 
      echo " " . $column1[$i]; 
      $var = $column1[$i]; 
      echo " = " . $var . " , "; 

     } 
     for($i = 0; $i < 5; $i++){ 
      echo " " . $column2[$i]; 
      $var = $column2[$i]; 
      echo " = " . $var . " , "; 
     } 

Dies ist der resultierende Text:

64-bitPDO verfügbar ist

Array

Array id = id, Kurz des = Kurz des Voll des = full-des, Bild-URLs = Bild-URLs, Datum-erstellt = Datum erstellt, ID = ID, Kurz-Des = Kurz-Des, Voll-Des = Voll-Des, Bild-URLs = Bild-URLs, Datum -created = Datum erstellt, erfolgreich verbunden

Ich vermute es ist ein dummer einfacher Grund, dass es keine tatsächlichen Werte zeigt. Ich bin mit dem "Fetch" -Konzept nicht vertraut, da ich von JDBC komme, aber ich habe die letzten paar Tage damit verbracht, zu versuchen, es zum Laufen zu bringen, ohne Erfolg. Ich habe ähnliche Beiträge wie this post und this post und this post angeschaut. Diese scheinen etwas andere Probleme zu behandeln. Leider möchte ich eine vorbereitete Anweisung anstelle einer tatsächlichen Abfrage verwenden.

Antwort

1

Ich glaube, das Problem sind Ihre einfachen Anführungszeichen. Versuchen Sie folgendes:

$sth = $conn->prepare("SELECT `id`, `short-des`, `full-des`, `image-urls`, `date-created` FROM projects"); 

Hinweis: Backticks ` nicht die gleichen sind wie Apostrophe '.

+0

Leider löst das das Problem nicht. Ich habe einfache Anführungszeichen verwendet, weil ich irgendwo gesehen habe, dass Sie sie verwenden können, wenn Ihre Spaltennamen Schlüsselbegriffe enthalten. Das Wort "füllen" und "Datum" wird hervorgehoben. $ sth = $ conn-> prepare ("SELECT ID, Kurz-Des, Full-Des, Image-URLs, Datum-erstellt von Projekten"); –

+0

@JosiahL. Was gibt 'var_dump ($ row);' mit dieser Änderung aus? Eigentlich benutzt du den Backtick 'not '. Probier es jetzt mit dem Backtick. – imtheman

+0

Es kann nichts ausgegeben werden. Dies wird jedoch mit den einfachen Anführungszeichen ausgegeben: array (2) {[0] => array (10) {["id"] => string (2) "id" [0] => string (2) " id "[" short-des "] => Zeichenkette (9)" short-des "[1] => Zeichenkette (9)" short-des "[" full-des "] => Zeichenkette (8)" full- des " des "[2] => string (8)" full-des "[" bild-urls "] => string (10)" bild-urls "[3] => string (10)" bild-urls "[" date-created "] => Zeichenkette (12)" date-created "[4] => Zeichenkette (12)" date-created "} [1] => array (10) {[" id "] => string (2) "id" [0] => string (2) "id" ["short-des"] => string (9) "short-des" [1] => string (9) "short-des" [ "full-des"] => string (8) –