Я использую приведенный ниже код для запроса базы данных доступа с использованием PHP.
<?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);
Это наполовину работает, все текстовые поля возвращаются нормально, но поля даты возвращаются как {} без ничего внутри, кто-нибудь знает, почему он решил игнорировать поля даты?
РЕДАКТИРОВАТЬ
Когда я var_dump $ arrResult перед преобразованием в json, это одна из дат:
["Appointment"]=>
object(variant)#77 (0) {
}
Скорее всего, вам нужно добавить charset=utf8
к вашей связи или к utf8_encode()
дата перед вами json_encode()
Это.
Вы также можете использовать:
mysql_query('SET CHARACTER SET utf8')
до вашего SELECT
запрос.
я сделал это :
$arrRow[$newArr[$i]] = (string)$arrColumns[$i]->value;
Преобразование его в строку, и это сработало