使用php-odbc从访问中检索数据会在参数行中抛出错误


retrieve data from access using php odbc throws error in parameter line

我正在尝试使用odbc连接和php从access数据库中的表中提取数据。我已经写了下面的代码,但它给出了错误"未捕获异常'com_exception',消息'来源:用于ODBC驱动程序的Microsoft OLE DB提供程序
描述:[Microsoft][ODBC Microsoft Access Driver]查询表达式'table1.col_date"
中语法错误(缺少运算符)

<?php $cn = new com("ADODB.Connection");
 $rs = new com("ADODB.Recordset");
$cn->open("dsn=odbcconnection");
?>
<form action = "thispage.php" method = "post">
Enter Date : <input type = "text" name = "datadate" />
<input type = "submit" name = "submit" value = "submit" /> 
</form>
<?php
$datadate = isset($_REQUEST['datadate']) ? $_REQUEST['datadate'] : null; ?>
<?php $sql = "select col_date, sum(qty1), sum(qty2) from table1
              where  table1.col_date = '".$datadate."'
              group by col_date
              order by col_date";
// Execute query
$rs = $cn->execute($sql);

我认为只有参数行table1.col_date=$datadate存在问题,因为当我将$datadate替换为静态日期(如table1.col_date=#05/08/2012#)时,它会正确显示日期的输出

问题是,您使用的查询字符串参数发布到当前页面是空的,或者您与POST混淆了。尝试以下

如果你是张贴到页面本身,然后做以下

<form action = "<?php echo $PHP_SELF; ?>" method = "post"> 

然后将更改为以下内容:

$datadate = isset($_POST['datadate']) ? $_POST['datadate'] : null; ?>

最后,按照前面所说的进行更改

[table1].[col_date]替换[table1.col_date]或完全拆除支架并尝试以下

<?php $sql = "select col_date, qty1, qty2 from table1 where  [table].[col_date]= '".$datadate."' group by col_date order by col_date";