加入不使用PHP + ODBC + Microsoft Access

时间:2013-04-04 21:54:56

标签: php sql ms-access odbc

我正在尝试编写一个插入现有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 Driver。我得到的错误代码是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命令不起作用

1 个答案:

答案 0 :(得分:1)

由于echo $sql给你......

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

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

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