ODBC Abfrage funktioniert nicht.
Jonny F.
- php
0 Encoder0 Jonny F.
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.
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.
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.
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.
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.
Wo ist in deiner Ausgangsfrage ein $bla ?