2016-04-20 27 views
0

Ich verwende den folgenden Code, um eine Access-Datenbank mit PHP abzufragen.PHP bekommen Ergebnisse von Zugriff nicht bekommen Daten

<?php 

// Create an instance of the ADO connection object 
$conn = new COM ("ADODB.Connection") or die("Cannot start ADO"); 

// Define the connection string and specify the database driver 
$connStr = "PROVIDER=Microsoft.Ace.OLEDB.12.0;Data Source=".realpath("HS_BE.accdb").";"; 

// Open the connection to the database 
$conn->open($connStr); 

// Declare the SQL statement that will query the database 
$query = "SELECT TOP 20 * FROM Valuations WHERE Consultant = '1'"; 

// Execute the SQL statement and return records 
$rs = $conn->execute($query); 

$num_columns = $rs->Fields->Count(); 
$arrColumns = array(); 

for ($i=0; $i < $num_columns; $i++) { 
    $arrColumns[] = $rs->Fields($i); 
    $newArr[] = $rs->Fields($i)->name; 
} 

$arrResult = array(); 

while (!$rs->EOF) { 
    $arrRow = array(); 
    for ($i=0; $i < $num_columns; $i++) { 
     $arrRow[$newArr[$i]] = $arrColumns[$i]->value; 
    } 
    $arrResult[] = $arrRow; 

    $rs->MoveNext(); 
} 
header('Content-Type: application/json'); 
echo json_encode($arrResult); 

in dieser Halbzeit arbeitet, werden alle Textfelder in Ordnung zurückkehren, aber die Datumsfelder sind wieder als {} mit nichts drin, weiß jemand, warum die Wahl der Datumsfelder zu ignorieren?

EDIT Wenn ich $ arrResult vor der Konvertierung zu json var_dump, das ist, was man von Ihnen gewünschten Termin ist:

["Appointment"]=> 
    object(variant)#77 (0) { 
    } 

Antwort

0

Sie höchstwahrscheinlich charset=utf8 zu Ihrer Verbindung oder zu utf8_encode() dem Zeitpunkt, bevor Sie json_encode() hinzufügen müssen es.

Sie könnten auch verwenden:

mysql_query('SET CHARACTER SET utf8') 

vor Ihrer SELECT Abfrage.

+0

Es ist noch zu tun, die detais nur "11.00 Uhr" und "04-Apr-12" so etwas wie das zeigt nicht, aber ich habe eine Telefonnummer Spalte, die gut zurückgibt –

+0

Wie gibt es vor json_encode() zurück? Wie sieht das Datum in $ arrResult aus? –

+0

["Termin"] => Objekt (Variante) # 77 (0) { } –

0

i tat dies:

$arrRow[$newArr[$i]] = (string)$arrColumns[$i]->value; 

es in einen String konvertieren und es funktionierte