PHP , ODBC (MSSQL)+ convert = count-error

Plaats reactie
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

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?
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

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 :twisted:
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

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...
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

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).
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

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 :-)
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

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 :?
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

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)
Bijlagen
odbc_exec_error.png
(17.97 KiB) 606 keer gedownload
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

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 8)
Plaats reactie

Terug naar “Development”