Pagina 1 van 1
PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 06 jul 2009, 16:32
door meon
Volgende query gaat fout:
Code: Selecteer alles
$OR_Query = odbc_prepare($link,"INSERT INTO PortalRequest (OrderedBy,SiteID,CostCentreNbr,Remarks,ExternalReference,OrderRequestValue,Date)
VALUES (?,?,?,?,?,?,convert(datetime,?))") or die(odbc_error());
odbc_execute($OR_Query,array($_SESSION['user_data']['user_id'],
$_SESSION['form_site'],
$_SESSION['form_costcentre'],
$_POST['remarks'],
urlencode($_POST['ExtRef']),
$_POST['FormValue'],
date('m/d/Y H:i:s')
)
) or die(odbc_error());
met volgende foutmelding:
Code: Selecteer alles
WARNING: odbc_execute() [function.odbc-execute]: SQL error: [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error, SQL state 07001 in SQLExecute
Het probleem situeert zich bij convert(datetime,?) . Als ik dit veld weg laat gaat het wél. Iemand een idee?
Re: PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 06 jul 2009, 22:57
door ubremoved_539
Aangezien je als date toch de huidige datum wil, waarom laat je hem dan niet gewoon weg in de insert... met een default value heb je dan de huidige datum. Of anders schrijf je gewoon "now" (althans da's in DB2) in plaats van parameters te gebruiken.
Maar je weet natuurlijk graag waarom het wel fout gaat

Re: PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 06 jul 2009, 23:00
door meon
Euhm ja. Daar had ik niet eens aan gedacht

Morgen eens instellen.
En inderdaad, wat er fout loop had ik graag geweten, maar ik ga er geen uren google/uitprobeerwerk in willen steken

.
Op enkel al het feit dat ik een datum via convert() moet laten lopen heb ik al even zitten zoeken ... MSSQL is niet vanzelfsprekend...
Re: PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 06 jul 2009, 23:09
door Astralon
Het je al eens geprobeerd of je via een andere interface records kan inserten?
Ik heb zo het gevoel dat er met de PortalRequest tabel iets fout is, een trigger of zo die wordt gestart die start als je een record insert (ON INSERT).
Re: PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 06 jul 2009, 23:15
door meon
Ik heb er geen triggers op staan. Ik deed het eerst rechtstreeks via een odbc_exec(), maar daar gaat het
soms fout als je html-opmaak in een TEXT-field wilt inserten. Ik vraag me soms af hoe gebruikers het voor mekaar krijgen om zulks gekke code in zo'n rich text field te krijgen, maar ik zal de schuld wel bij het copy/pasten vanuit Outlook moeten zoeken.
Enfin ja, 97% van de keren gaat het goed, ik probeer nu 100% te halen

Re: PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 06 jul 2009, 23:51
door Astralon
Kan je gemakkelijk achterhalen voor welke input het fout gaat?
Toevallig tekst met enkelvoudige of dubbele quotes?
Zit te denken aan een oud PHP-SQL probleem en/of SQL injection probleem

Re: PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 07 jul 2009, 00:01
door meon
Injection, ongeveer: het gaat waarschijnlijk inderdaad fout bij quotes, maar addslashes, enkele quotes door 2x enkele en vanalles heb ik al geprobeerd....
Via een prepared statement heb ik dàt probleem niet meer (maar wel een ander dus

)
For your viewing pleasure de oude error (nu niet meer van toepassing)
Re: PHP , ODBC (MSSQL)+ convert = count-error
Geplaatst: 07 jul 2009, 14:10
door ubremoved_539
meon schreef:Injection, ongeveer: het gaat waarschijnlijk inderdaad fout bij quotes, maar addslashes, enkele quotes door 2x enkele en vanalles heb ik al geprobeerd....
En dan heb je soms nog alle vormen van Unicode representatie... enfin, er zijn bijna honderd manieren om rotzooi via een webformulier binnen te duwen
