我正在使用以下代码使用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) {
}
答案 0 :(得分:0)
您很可能需要将charset=utf8
添加到您的连接中,或utf8_encode()
之前的json_encode()
日期。
你也可以使用:
mysql_query('SET CHARACTER SET utf8')
在SELECT
查询之前。
答案 1 :(得分:0)
$arrRow[$newArr[$i]] = (string)$arrColumns[$i]->value;
将其转换为字符串并且有效