2013-04-04 51 views
1

我正在嘗試編寫一個插入現有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

回答

1

由於echo $sql給你...

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

測試相同的語句在Access中一個新的查詢。在查詢設計器中創建一個查詢,切換到SQL視圖,粘貼語句並查看運行時會發生什麼。

最常見原因「參數太少」是拼寫錯誤的項目(對象名稱,函數或SQL關鍵字)。由於數據庫引擎找不到該項目,它假定該項目是一個參數。 Access將彈出一個參數對話框,要求您提供參數值,並且該對話框還包含該參數的名稱。所以它會告訴你哪個是拼寫錯誤的項目。

相關問題