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]' 

2 番目のテーブルに参加しようとせずに。

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 コマンドはありますか

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 に答える