JOIN不能使用PHP + ODBC + Microsoft Access

问题描述:

我正在尝试编写一个插入现有Access数据库的PHP脚本。如果我从头开始,我会用MySQL来完成这项工作,但是因为现在有一个MS Access应用程序,所以我坚持使用数据库。JOIN不能使用PHP + ODBC + Microsoft 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命令,不工作

+0

我其实也有。只留下'echo $ sql;'和一些其他部分,以提高可读性。 输出正是我所期待的:'SELECT * FROM Teilnehmer INNER JOIN TeilnWerte ON Teilnehmer.LfdNr = TeilnWerte.Teilnehmer WHERE Teilnehmer.Klasse =“06A'' – 2013-04-04 22:05:24

+1

谷歌搜索此错误消息表明,它通常出现在现场的一个时查询中的名称不正确。当你尝试查询'SELECT Teilnehmer FROM TeilnWerte'时会发生什么? – mickfold 2013-04-04 22:20:09

+1

某些旧版本的Access有时可能会针对您的JOIN周围的圆括号。不知道是否是这种情况,但认为我会提到它。 – sgeddes 2013-04-04 22:22:46

由于echo $sql给你...

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

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

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