1

我正在尝试编写一个插入现有 Access 数据库的 PHP 脚本。如果我从头开始,我会使用 MySQL 来完成这项工作,但是因为有一个现有的 MS Access 应用程序,所以我只能使用数据库。

截至目前,我正在尝试使以下 PHP 代码正常工作。

$conn=odbc_connect('buju','','');
if (!$conn)
{
  exit("Connection Failed: " . $conn);
}

$sql="SELECT * 
      FROM Teilnehmer 
      INNER JOIN TeilnWerte ON Teilnehmer.LfdNr = TeilnWerte.Teilnehmer 
      WHERE Teilnehmer.Klasse = '$_POST[klasse]'";
$rs=odbc_exec($conn,$sql);

echo "\nErrorCode:\n".odbc_error($conn);
echo "\nErrorMessage:\n".odbc_errormsg($conn);

我很确定,问题出在 SQL 查询中,因为如果我只这样做,它就可以正常工作

SELECT * FROM Teilnehmer WHERE Klasse = '$_POST[klasse]' 

没有尝试加入第二张桌子。

我正在使用 odbc 和 Microsoft Access 驱动程序。我得到的错误代码是07001. 错误消息是

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

我也试过

SELECT * 
FROM Teilnehmer, TeilnWerte 
WHERE Teilnehmer.LfdNr = TeilnWerte.Teilnehmer 
  AND Teilnehmer.Klasse = '$_POST[klasse]'

这也不起作用。

有什么我做错了吗?是否有某些 SQL 命令不起作用

4

1 回答 1

1

既然echo $sql给你...

SELECT *
FROM
    Teilnehmer
    INNER JOIN TeilnWerte
    ON Teilnehmer.LfdNr = TeilnWerte.Teilnehmer
WHERE Teilnehmer.Klasse = '06A'

在 Access 中测试与新查询相同的语句。在查询设计器中创建一个查询,切换到 SQL 视图,粘贴该语句并查看运行它时会发生什么。

大多数情况下,“参数太少”的原因是拼写错误的项目(对象名称、函数或 SQL 关键字)。由于 db 引擎找不到该项目,它假定该项目是一个参数。Access 将弹出一个参数对话框,要求您提供参数值,该对话框还包含参数的名称。所以它会告诉你哪个是拼写错误的项目。

于 2013-04-04T23:03:29.413 回答