Jonny F.: ODBC Abfrage funktioniert nicht.

Hallo,

ich verwene Access 2003 und PHP 5.x

~~~php

<?php
        //Suchbegriff wird in einer Session gespeichert
$_SESSION['suchbegriff']=$_POST['suchbegriff'];
       //Datenbank DSN
        $host="blablub";
        $benutzer=""; //gibt es keins
        $pass=""; //gibt es keins

//Verbindung zu My-SQL
        $conn=odbc_connect($host,$benutzer,$pass)
           or die ("Es konnte keine Verbindung zu MySQL-Server hergestellt werden!");

//hier ist was faul, wenn ich die Abfrage bis zum FROM also
/*
 SELECT zTelbuch.Index, zTelbuch.Nachname, zTelbuch.Vorname, zTelbuch.Firma, zTelbuch.Rufnummer
 FROM zTelbuch

mache bekomm ich alle Daten ausgegeben, sobald ich das Where statement ranhänge kommt diese Fehlermeldung

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben., SQL state 07001 in SQLExecDirect in C:\xampplite\htdocs\ztelefonbuch\telefonbuch.php  on line 67

Das ist die Zeile 67
$abfrage=odbc_exec($conn, $query) or die (mysql_error());

*/
        $query = '
                  SELECT zTelbuch.Index, zTelbuch.Nachname, zTelbuch.Vorname, zTelbuch.Firma, zTelbuch.Rufnummer
          FROM zTelbuch
  WHERE (((zTelbuch.Nachname) Like "ri")) OR
    (((zTelbuch.Vorname) Like "ri")) OR
    (((zTelbuch.Firma) Like "ri")) OR
    (((zTelbuch.Rufnummer) Like "ri"))
  ORDER BY zTelbuch.Nachname, zTelbuch.Vorname, zTelbuch.Firma;
            ';

$abfrage=odbc_exec($conn, $query) or die (mysql_error());

  
Ich hoffe jemand sieht mein Fehler  
  
Gruß Jonny F.
  1. Sind das wirklich Sternchen für LIKE? Ich glaube dass Access da schon irgendwas anders macht, aber obs dann von außerhalb auch so sein muss?
    Sonst probiers erst mal ohne Platzhalterzeichen, obs dann geht.
    Du machst übrigens sehr viele Klammern in deine Abfrage.

    1. Sind das wirklich Sternchen für LIKE? Ich glaube dass Access da schon irgendwas anders macht, aber obs dann von außerhalb auch so sein muss?

      Ja ohne Platzhalter hab ich es schon versucht, er will aber net:D,

      Sonst probiers erst mal ohne Platzhalterzeichen, obs dann geht.
      Du machst übrigens sehr viele Klammern in deine Abfrage.

      Die Klammern sind da weil ich mir diese Abfrage per Access hab ausgeben lassen, meine erste vermutung war ja eh schon Syntaxfehler weil ich ja einer reiner SQLer bin :)

      odbc_exec ist aber schon die richtige funktion und beim Connect ist auch alles vollständig oder habe ich da was übersehen.

      Danke für deine Hilfe

      Gruß Jonny F.

      1. Hallo,

        Die Klammern sind da weil ich mir diese Abfrage per Access hab ausgeben lassen, meine erste vermutung war ja eh schon Syntaxfehler weil ich ja einer reiner SQLer bin :)

        ok. Und warum verwendest Du dann doppelte Anführungszeichen um die Zeichenketten? Weil's der Abfrageeditor so anzeigt?

        Die Jet-SQL-Referenz sagt, dass Du wie es in SQL Standard ist [1], *ausschließlich* einfache Anführungszeichen verwenden darfst.

        Freundliche Grüße

        Vinzenz

        [1] MySQL ist eine Ausnahme und der Abfrageeditor von Access lügt Dir etwas vor.

        1. Vielen Dank für die Hilfe,

          ich habe es entlich hinbekommen :)

          lag doch an der Abfrage, er hat die Anführungszeichen nicht akzeptiert erst als ich

          $bla = ' ';
          einstatt
          $bla = "";

          gemacht habe hat es funktioniert.

          Gruß Jonny F.

          1. Wo ist in deiner Ausgangsfrage ein $bla ?