PHP从访问中获取结果而不是获取日期

时间:2016-04-20 08:38:39

标签: php ms-access-2010

我正在使用以下代码使用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); 

这是一半工作,所有文本字段都返回正常但日期字段返回为{},内部没有任何内容,是否有人知道为什么选择忽略日期字段?

EDIT 当我在转换为json之前的var_dump $ arrResult时,这就是其中一个日期:

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

2 个答案:

答案 0 :(得分:0)

您很可能需要将charset=utf8添加到您的连接中,或utf8_encode()之前的json_encode()日期。

你也可以使用:

mysql_query('SET CHARACTER SET utf8')
SELECT查询之前

答案 1 :(得分:0)

我这样做了:

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

将其转换为字符串并且有效