SQL über COM/ADO - Probleme mit Sonderzeichen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL über COM/ADO - Probleme mit Sonderzeichen

    Hallo,

    ich habe offenbar Probleme bei SQL-Abfragen, in denen Sonderzeichen vorkommen. Es geht um folgende Abfrage:

    $conn = new COM("ADODB.Connection") or die("Cannot start ADO");
    $conn->Open("Provider = MSDASQL.1;Persist Security Info=False;User ID=LD;Password=a;Data Source=sc_report_odbc");

    $query="SELECT * FROM contactsm1 WHERE contactsm1.contact.name= '$user'";
    $rs = $conn->Execute($query);


    Ich nutze diese Abfrage, um den Benutzer, der sich auf meiner
    Anmeldeseite anmeldet, abzuprüfen und das Passwortfeld mit dem
    eingegebenen Passwort zu vergleichen.


    Folgende Abfrage funktioniert:

    SELECT * FROM contactsm1 WHERE contactsm1.contact.name= 'PETERS, JEFF'


    Folgende Abfrage funktioniert nicht:

    SELECT * FROM contactsm1 WHERE contactsm1.contact.name= 'XSA_SPLUB'

    ebenso Abfragen mit [ und (

    Bei der Datenbank handelt es sich um eine proprietäre Datenbank, die früher nur über Crystal Reports abgefragt werden konnte, mittlerweile auch über ADO (Perl/PHP). Ansonsten funktioniert alles wunderbar.

    Herzlichen Dank im voraus!!

    Lars Detmers

  • #2
    Ergänzung:

    Ich habe das Problem mittlerweile eingrenzen können:

    Es soll folgender Datensatz (Feld contact.name) gesucht werden:

    HUGO, HABLA [1122] (4711)



    Folgendes funktioniert nicht:

    SELECT * FROM contactsm1 WHERE contactsm1.contact.name= 'HUGO, HABLA [1122] (4711)'

    SELECT * FROM contactsm1 WHERE contactsm1.contact.name startswith 'HUGO, HABLA [1122] (4711)'


    Folgendes funktioniert:

    SELECT * FROM contactsm1 WHERE contactsm1.contact.name startswith 'HUGO, HABLA [1122] *4711*'


    Folgendes funktioniert nicht:

    SELECT * FROM contactsm1 WHERE contactsm1.contact.name = 'HUGO, HABLA [1122] *4711*'


    Vermutlich habe ich zwei Probleme:

    1. Internationale Zeichensätze: Wenn ich beginnt mit Suche, und das ( durch ein * ersetze - auf der englischen Tastatur steht anstelle ( das *, dann wird der Datensatz

    HABLA [1122] (4711)

    gefunden.

    2. Offensichtlich hat die Datenbank / ODBC Treiber ein Problem mit = Queries.


    Problem Nr. 2 will ich mal vernachlässigen - gibt es zu Problem Nr. 1 eine
    Lösung?

    Muß ich in Apache, PHP oder sonstwo eine Sprache einstellen oder kann ich bei der SQL Abfrage vorher irgendetwas zur Umwandlung der Zeichen tun?


    Im voraus vielen herzlichen Dank!!!!

    Kommentar

    Lädt...
    X