• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[GELÖST]Anführungszeichen im Feld bei einem MS-SQL-Statement

Frankie777

Advanced Hacker
Hallo,

ich greife per freetds ODBC von PHP auf eine MS-SQL Datenbank zu. Das klappt auch prima.

Nun habe ich in einigen Feldern einfache Anführungszeichen. Diese Felder muß ich aber in einen anderen SQL-Statement benutzen. Wie kann ich das machen?

$fieldsql = "daten '04"


WHERE mssqlfeld = "daten '04"
nimmt MS-SQL nicht an

WHERE mssqlfeld = 'daten '04'
geht natürlich nicht

WHERE mssqlfeld = 'daten \'04'
funktioniert nicht
 

Morlon

Member
Hi,

am Besten mal mit:

Code:
WHERE mssqlfeld LIKE 'daten _04'

oder halt richtig mit 2 einzelnen Hochkommas nacheinander:

Code:
WHERE mssqlfeld='daten ''04'

probieren.

MfG
 
OP
Frankie777

Frankie777

Advanced Hacker
Das geht perfekt:
WHERE mssqlfeld = 'daten ''04'
EDIT (Das sind ZWEI EINZELNE!!! Anführunszeichen vor 04) EDIT

LIKE geht auch mit underline
WHERE mssqlfeld LIKE 'daten _04'

Doppelte Anführungszeichen mag MS-SQL überhaupt nicht annehmen
WHERE mssqlfeld = "test"
WHERE mssqlfeld = "daten ''04"
EDIT Das sind zwei einfache Anführungszeichen vor 04 /EDIT
Weder über odbc_exec noch im SQL Query Analyzer.

Ich muß nur noch mit PHP die Strings untersuchen und manipilueren und dann läuft es.

Danke für die Hilfe!
 
OP
Frankie777

Frankie777

Advanced Hacker
OK, ich meinte die äußeren doppelten Anführungszeichen.

WHERE feld = "bla" geht nicht mit MS-SQL
WHERE feld = 'bla ""hdhd' geht mit MS-SQL um ein doppeltes Anführungszeichen als Feldinhalt mizuteilen

Bei mySQL geht es allerdings einfach so:
select * FROM kurzwahlen WHERE TeilnehmerBez = "210 '05"
 

panamajo

Guru
Frankie777 schrieb:
OK, ich meinte die äußeren doppelten Anführungszeichen.

Ach so. Da müsste
Code:
WHERE feld = 'bla "hdhd'
gehen...

Die Syntax mit "Doppeln" (statt Escape) ist IIRC auch bei JDBC üblich.
Schön gelöst ist das bei PEAR :: DB mit der Methode quoteSimple() die (abhängig vom Backend) für korrekte Literals sorgt.
 
OP
Frankie777

Frankie777

Advanced Hacker
Stimmt,
WHERE feld = 'bla "hdhd'
nimmt MS-SQL sofort an.

Also würde feld = 'bla ""hdhd' zwei mal das doppelte Anführungszeichen übermitteln.

Gut zu wissen, danke für den Hinweis.
 
Oben