PHP получает результаты от доступа, не получая даты

Я использую приведенный ниже код для запроса базы данных доступа с использованием 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) {
}

0

Решение

Скорее всего, вам нужно добавить charset=utf8 к вашей связи или к utf8_encode() дата перед вами json_encode() Это.

Вы также можете использовать:

mysql_query('SET CHARACTER SET utf8')

до вашего SELECT запрос.

0

Другие решения

я сделал это :

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

Преобразование его в строку, и это сработало

0

По вопросам рекламы [email protected]