[Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。相关的知识,希望对你有一定的参考价值。
asp代码如下:
Set rs = Server.Createobject("Adodb.Recordset")
sql = "insert into tb_error (TIME,CODE,TEXT,FUNC,IP,TELL,INFO) values ('" & now & "','错误代码','错误文本','错误子程序','用户IP','用户描述','系统信息') ;"
rs.open sql,conn,1,3
输出的sql语句如下:
insert into tb_error (TIME,CODE,TEXT,FUNC,IP,TELL,INFO) values ('2014-5-15
0:44:46','错误代码','错误文本','错误子程序','用户IP','用户描述','系统信息') ;
错误信息如下:
Microsoft OLE DB Provider for ODBC Drivers '80040e14'
[Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。
\insert.asp, line 17
insert into [tb_error] ([TIME],[CODE],[TEXT],[FUNC],[IP],[TELL],[INFO])
values ('2014-5-15 0:44:46','错误代码','错误文本','错误子程序','用户IP','用户描述','系统信息') ;
odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1.,SQLExecDirect 中的 SQL 状态 0700
【中文标题】odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1.,SQLExecDirect 中的 SQL 状态 07001【英文标题】:odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1., SQL state 07001 in SQLExecDirect 【发布时间】:2021-11-28 01:51:56 【问题描述】:我在使用 MS Access 数据库的 PHP 中遇到了一些问题,当我在 PHP 中运行查询时显示错误
但是当我要回显“$query”变量并在 Microsoft Access 中运行语法时运行良好。
这是我的查询:
<?php
// setup database for your microsoft Access
// you can setup password in you microsoft Access
// this is a variable for your connection in odbc
// "zkConnection" is your ODBC Data Source Administrator
$conn = odbc_connect("zkConnection", "", "");
// create condition for testing conecction
if ($conn)
// echo "<br>Connection Established</br>";
else
echo "Koneksi Gagal";
$from_date = date('d/m/Y', strtotime($_REQUEST['from_date'])) . ' 00:00:00';
$to_date = date('d/m/Y', strtotime($_REQUEST['to_date'])) . ' 23:59:59';
$query = "INSERT INTO CalculateData(USERID, Name, lastname, CardNo, DEPTID, DEPTNAME, SUPDEPTID, datein, timein, dateout, timeout) SELECT USERID, Name, lastname, CardNo, DEPTID, DEPTNAME, SUPDEPTID, Format(CHECKTIME, \"dd/mm/yyyy\") AS datein, FORMAT(MIN(CHECKTIME), 'h:m:s') AS timein, Format(CHECKTIME, \"dd/mm/yyyy\") AS dateout, FORMAT(MAX(CHECKTIME), 'h:m:s') AS timeout
FROM TransactionLog WHERE CHECKTIME BETWEEN #$from_date# AND #$to_date#
GROUP BY USERID, Name, lastname, CardNo, DEPTID, DEPTNAME, SUPDEPTID, CHECKTIME ";
if ($query)
// echo $query;
$letsgo = odbc_exec($conn, $query);
if ($letsgo === false)
die(print_r( odbc_error(), true));
else
header("location: index.php");
?>
这是我的表字段 CalculateData : CalculateData
这是我的表字段 TransactionLog : TransactionLog
【问题讨论】:
SQL Server MS Access - 请更正您的标签。 根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。 【参考方案1】:首先,您的 sql 命令的计算结果必须是这样的:
CHECKTIME BETWEEN #2021/09/28 00:00:00# AND #2021/09/29 23:59:59#
因此,尝试:
$from_date = date('Y/m/d', strtotime($_REQUEST['from_date'])) . ' 00:00:00';
$to_date = date('Y/m/d', strtotime($_REQUEST['to_date'])) . ' 23:59:59';
$query = "INSERT INTO CalculateData (USERID, [Name], lastname, CardNo, DEPTID, DEPTNAME, SUPDEPTID, datein, timein, dateout, timeout) SELECT USERID, [Name], lastname, CardNo, DEPTID, DEPTNAME, SUPDEPTID, Format(CHECKTIME, '\#yyyy/mm/dd\#') AS datein, FORMAT(MIN(CHECKTIME), '\#h:m:s\#') AS timein, Format(CHECKTIME, '\#yyyy/mm/dd\#') AS dateout, FORMAT(MAX(CHECKTIME), '\#h:m:s\#') AS timeout
FROM TransactionLog WHERE CHECKTIME BETWEEN #$from_date# AND #$to_date#
GROUP BY USERID, [Name], lastname, CardNo, DEPTID, DEPTNAME, SUPDEPTID, CHECKTIME";
你也可以试试这个更简单的方法:
SELECT USERID, [Name], lastname, CardNo, DEPTID, DEPTNAME, SUPDEPTID, DateValue(CHECKTIME) AS datein, TimeValue(MIN(CHECKTIME)) AS timein, DateValue(CHECKTIME) AS dateout, TimeValue(MAX(CHECKTIME)) AS timeout
【讨论】:
当我这样做时,结果显示此“odbc_exec(): SQL 错误: [Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)格式(CHECKTIME, \# dd/mm/yyyy\#)'., SQL 状态 37000 in SQLExecDirect in" 是的,格式表达式是字符串。请查看编辑后的答案。 谢谢 Gustav,一切顺利!!!以上是关于[Microsoft][ODBC Microsoft Access Driver] INSERT INTO 语句的语法错误。的主要内容,如果未能解决你的问题,请参考以下文章
odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1.,SQLExecDirect 中的 SQL 状态 0700
odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)
PHP 警告:odbc_connect():SQL 错误:[Microsoft][ODBC Microsoft Access Driver]一般错误无法打开临时注册表项(易失性)
无法通过 odbc 连接到 Microsoft Azure 数据库
PYODBC ProgrammingError: ('42000', "[42000] [Microsoft][Pilote ODBC Microsoft Access]