对MSAccess的PHP PDO查询无法正常工作
因此,我使用PDO(ODBC)访问MSAccess数据库。我正在尝试获取本周的所有记录,而不是过去七天的记录。我的问题是:对MSAccess的PHP PDO查询无法正常工作,php,ms-access,pdo,odbc,Php,Ms Access,Pdo,Odbc,因此,我使用PDO(ODBC)访问MSAccess数据库。我正在尝试获取本周的所有记录,而不是过去七天的记录。我的问题是: SELECT * FROM tblBilling WHERE (( Year(DateOfService) = Year(Date()) And DatePart("ww", DateOfService, 0) = DatePart("ww", Date(), 0) )) ORDER BY DateOfService, TimeOfService 显
SELECT *
FROM tblBilling
WHERE ((
Year(DateOfService) = Year(Date())
And DatePart("ww", DateOfService, 0) = DatePart("ww", Date(), 0)
))
ORDER BY DateOfService, TimeOfService
显然,这在MSAccess中有效,但当从web应用程序使用它时,我会出现以下错误:
SQLSTATE[07002]: COUNT field incorrect:
-3010 [Microsoft][ODBC Microsoft Access Driver]
Too few parameters. Expected 1.
(SQLExecute[-3010] at ext\pdo_odbc\odbc_stmt.c:254)
我似乎无法理解这一点。我一定是忽略了什么,我的大脑现在变得一团糟。我知道如果我删除DataPart
,它将运行查询并且不会返回错误,但是它不会执行我需要它执行的操作
谢谢你的帮助
要求的额外代码:
try
{
$pdo = new PDO('odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq='.DB_NAME.';Uid=');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$myPDO = $pdo->prepare($query);
$myPDO->execute();
$result = $myPDO->fetchAll();
} catch(PDOException $e)
{
echo $e->getMessage();
}
ADODB连接似乎没有将查询的Datepart部分识别为函数(它认为它是一个参数) 这并不能帮你解决你的问题。。。。但这里有另一种方法可以到达你想去的地方 过去,我通过创建日历表(从逻辑角度来看,财务日历有点不太常见)来解决这种性质的问题。这是我从中得到的一个想法 这张桌子看起来像这样
您可以轻松地放置50年的日历日,而不会导致任何类型的性能问题。然后,通过加入日历表,您可以根据需要获取日期存储桶。任何想要了解的人。如果您对MSAccess数据库运行查询,那么查询语法将与您使用的语法不同。我就是这样让它工作的。我将ww周围的双引号改为单引号。
SELECT *
FROM tblBilling
WHERE ((Year(DateOfService) = Year(Date())
AND DatePart(\'ww\', DateOfService, 0) = DatePart(\'ww\', Date(), 0)))
ORDER BY DateOfService, TimeOfService
你能给我们看看你的密码吗?这是人们能够诊断您的问题的唯一方法。我认为您不需要在
WHERE
语句中添加这些括号。