[php + mssql] Unclosed quotation mark ...

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Topicstarter
Volledige foutmelding:

Unclosed quotation mark before the character string '

Oorzaak:
Ik wil in een query string gebruik kunnen maken van ' en ", voor mysql kan ik hiervoor addslashes of mysql_escape_string gebruiken.

als ik echter addslashes gebruik om de ms sql query te escapen krijg ik bovenstaande foutmelding.

nu heb ik al bedacht om, als er een ' in de query string staat 'm in " te enclosen en vice versa, maar wat nu als er zowel " als ' in staat, zoals bijvoorbeeld
"Aghia Sophia" Children's Hospital :?
AddSlashes maakt er het volgende van: \"Aghia Sophia\" Children\'s Hospital en het maakt niet uit of ik er ' of " omheen zet

de search geeft geen resultaten als ik op de foutmelding zoek :'(
Google geeft 2 pagina's, maar voor zover ik heb kunnen zien, geen oplossing ...

Ik zie waarschijnlijk iets simpels over het hoofd, maar wat |:(

[ Voor 10% gewijzigd door TheRookie op 20-03-2003 11:47 ]


Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
neej volgens mij is het iets anders laat de hele query eens zien.

Hij heeft waarschijnlijk een quote zonder eind quote.

En volgens mij komt het niet door de addslashes.

[ Voor 22% gewijzigd door martinvw op 20-03-2003 11:59 ]


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Topicstarter
Het gaat alléén fout bij namen waar een " én een ' in zit, bij andere gaat 't gewoon goed ...

maargoed, de query:
code:
1
2
3
SELECT * 
FROM table 
WHERE field = '\"Aghia Sophia\" Children\'s Hospital'


als ik er " omheen zet ziet ie er zo uit
code:
1
2
3
SELECT * 
FROM table 
WHERE field = "\"Aghia Sophia\" Children\'s Hospital"

en krijg ik een andere melding:
Line 1: Incorrect syntax near 'Aghia'

[ Voor 27% gewijzigd door TheRookie op 20-03-2003 12:11 . Reden: layout .. ]


Acties:
  • 0 Henk 'm!

Verwijderd

kan je dit niet proberen?

code:
1
2
3
SELECT * 
FROM table 
WHERE field = '"Aghia Sophia" Children\'s Hospital'


met alleen \ voor de ' en verder niet?

[ Voor 15% gewijzigd door Verwijderd op 20-03-2003 12:12 . Reden: [/code] vergeten ]


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Topicstarter
Nog steeds "Unclosed Quotation Mark" ...

Kan me niet voorstellen dat het eraan ligt, maar voor alle zekerheid de php die de query 'aanmaakt':
PHP:
1
2
3
4
5
6
7
8
9
$Org_Name = addslashes($Org);
$Query  = "SELECT ";
$Query .= "* ";
$Query .= "FROM ";
$Query .= "table ";
$Query .= "WHERE ";
$Query .= "field = '$Org_Name' ";

$Result = mssql_query($Query) or mssql_error_handle("$Query Failed");

mssql_error_handle is een custom foutafhandelingsfunctie (leuk galgje woord ;))

[ Voor 86% gewijzigd door TheRookie op 20-03-2003 12:23 . Reden: + php code ]


Acties:
  • 0 Henk 'm!

Verwijderd

Als je de query nu eens print. Misschien zien we dan wat er aan de hand is?

PHP:
1
2
3
<?
print($Query);
?> 

[ Voor 97% gewijzigd door Verwijderd op 20-03-2003 12:31 . Reden: Vraag gewijzigd na lezen vorige post :X ]


Acties:
  • 0 Henk 'm!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

In MSSQL 'escape' je een single quote door er twee single quotes van te maken, dus ' wordt ''

Today's subliminal thought is:


Acties:
  • 0 Henk 'm!

Verwijderd

Het is idd '' in plaats van \'
net als bij ASP

je zou dit kunnen gebruiken ipv addslashes:
PHP:
1
$escaped_string = ereg_replace("'","''",$string_with_single_quotes);

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
str_replace is toch veel sneller

offtopic:
Sorry voor mijn verder zinloze opmerking van hier boven ging er van uit dat mssql op dezelfde manier werd gescaped, maar ik had het op google wel kunnen vinden trouwens, het derde resultaat geloof ik.

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Topicstarter
Verwijderd schreef op 20 maart 2003 @ 12:24:
Als je de query nu eens print. Misschien zien we dan wat er aan de hand is?
Als je de draad nou leest voor je blaat :? :Z
de query en de php code ... :*)
Annie schreef op 20 March 2003 @ 12:39:
In MSSQL 'escape' je een single quote door er twee single quotes van te maken, dus ' wordt ''
_/-\o_ Hartelijk dank _/-\o_

[ Voor 23% gewijzigd door TheRookie op 20-03-2003 13:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Als je de draad nou leest voor je blaat :? :Z
Nou sorry hoor meneer de Rookie :O maar aan de php code kan je niet precies zien wat nu de exacte query is die je met mssql_query() uitvoert. En aan de de query kan je niet precies zien of je die zelf met knippen en plakken hebt samengesteld of dat het de extacte uitvoer van je code is. Even de inhoud van $Query printen vlak voordat je hem met mssql_query() uitvoert kan een hoop duidelijkheid geven.

Ik wou alleen maar helpen :|

[ Voor 3% gewijzigd door Verwijderd op 20-03-2003 14:23 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Topicstarter
het enige verschil tussen de 'echte' query en 'de' query zijn de tabel en kolom welke imo absoluut niet relevant zijn ...

edit:

excuses, d8 dat ik dat in de post met de query erbij had gezet :o :D, mea culpa

[ Voor 61% gewijzigd door TheRookie op 20-03-2003 14:25 . Reden: mea culpa ]


Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Nu online

Crazy D

I think we should take a look.

Heb je het nou al geprobeert door alleen de enkele ' te vervangen door 2 keer een ' ?
In ASP (vbscript), waar strings (ook) tussen " en " komen te staan, is dat nl. voldoende...
code:
1
sql = "SELECT * FROM tabel WHERE veld = '" & Replace(zoekstring, "'", "''") & "'"

Exact expert nodig?


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Topicstarter
Crazy D schreef op 20 maart 2003 @ 15:34:
Heb je het nou al geprobeert door alleen de enkele ' te vervangen door 2 keer een '
yep, zie mijn reactie een paar replies hierboven :)
Pagina: 1