MSSQL/FreeTDS: Insert für Unicode

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • MSSQL/FreeTDS: Insert für Unicode

    Hi,

    benutze RedHat-Linux 8.0, PHP 4.3.3, MSSQL 2000 und FreeTDS als Protokoll.

    Habe mehrere Tabellen mit NVARCHAR-Spalten, die unterschiedliche Sprachen enthalten. Beim Select und in der Ausgabe (mit Charset=UTF-8, auch in der freetds.conf) funktioniert alles bestens.

    Versuche ich das gerade gelesene zu schreiben (magic_quotes_sybase=on), kommt immer der Fehler "Unclosed quotation mark..". Insert sieht wie folgt aus:

    db("INSERT INTO table (test) VALUES (N'".addslashes($gelesen)."'");

    Für Ideen und Anregungen wär ich sehr dankbar... Bin schon ziemlich verzweifelt.

    mabrin

  • #2
    PHP Code:
     db("INSERT INTO table (test) VALUES (N'".addslashes($gelesen)."'"); 

    ist das PHP???


    das verstehe ich net sollte das nicht eher so aussehen?


    PHP Code:

    $var
    ="n".addslashes($gelesen);
    db("INSERT INTO table (test) VALUES ('$var'); 
    oder geht das wirklich so wie das oben steht
    also ich als newbee würde das so auf jedenfall so machen
    Wusstet ihr schon?
    Wer später bremst ist länger schnell!

    Die wahrscheinlich beste Funktion in PHP ist mysql_error(), doch leider auch die unbekannteste!

    Comment


    • #3
      Der Sinn des Codes ist ein anderer! Das N gilt für das Einfügen von Unicode in die MSSQL und dort wird verlangt, dass man N'unicodetext' schreibt.

      Und wo letztendlich die konkative Verbindung aufgenommen wird, ist wurscht. Bei Deiner Schreibweise verschwendest Du nur eine Variable

      mabrin

      Comment


      • #4
        sollte das dann nicht so aussehen?
        PHP Code:
        db("INSERT INTO table (test) VALUES (N'".addslashes($gelesen)."')"); 
        Kissolino.com

        Comment


        • #5
          Ja, natürlich. War nur ein Beispiel, wie der Syntax aussieht... Bin ja auch nur ein Mensch

          Grundsätzlich liegt es aber nicht an der Syntax! Nehme ich das erzeugte SQL-Statement und nutze dies im SQL-Manager, dann funktioniert alles wunderbar (Unicode wird exakt eingetragen).

          PHP, FreeTDS oder irgendeine andere Stelle scheint nicht mit den Doublebytes zurecht zu kommen (so zumindest meine Vermutung). Ich habe nur keine Ahnung an welcher Stelle. Selbst der Einsatz von mb_convert_encoding() (MSSQL benutzt UCS-2) half nicht weiter.

          mabrin

          Comment

          Working...
          X