Register Script Problem

12/31/2012 11:28 Exribo#1
Guten Tag Elitepvpers,

Ich habe versucht ein Register Script umzuschreiben. Ich habe eine Geheimfrage eingebaut, die ich SQL gebunden machen möchte. Ich habe es bis jetzt soweit, das ich mich zwar Registrieren kann, aber er mir dann wenn ich auf "Create Account" klicke diesen Error ( Warning ) anzeigt :

PHP Code:
Warningodbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Falsche Syntax in der Nähe von 'hier steht die Antwort'., SQL state 37000 in SQLExecDirect in C:\xampp\htdocs\register.php on line 37 
Dies ist Zeile 37 :

PHP Code:
odbc_exec($mssql'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\''.mssql_escape_string($_POST['reg_secret']).')'); 
reg_secret ist die Geheimantwort.

Ich bitte um Hilfe.

Mit freundlichen Grüßen

Exribo
01/02/2013 00:03 Exribo#2
Ich habe jetzt etwas getestet.

Ändere ich diesen Code :

PHP Code:
odbc_exec($mssql'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\''.mssql_escape_string($_POST['reg_secret']).')'); 
wieder zu dem normalen Code :

PHP Code:
odbc_exec($mssql'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\')'); 
und ändere im normalen code ganz am ende die reg_email zu reg_secret, dann schreibt es die Geheimantwort in die Spalte in der Datenbank wo eigentlich die E-Mail stehen sollte. Irgendwie muss ich das wie das normale lassen, also mit reg_email, aber noch reg_secret hinten dran setzen. Aber wenn ich dies tuhe bekomme ich immer den Error ( Warning ) :

PHP Code:
Warningodbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Falsche Syntax in der Nähe von 'hier steht die Antwort'., SQL state 37000 in SQLExecDirect in C:xampphtdocsregister.php on line 37 
Mein Test :

PHP Code:
odbc_exec($mssql'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\''.mssql_escape_string($_POST['reg_secret']).'\')'); 
Wie muss ich das richtig einfügen? Könnt ihr mir dabei helfen?

Mit freundlichen Grüßen

Exrib0
01/02/2013 02:01 yannick2008#3
odbc_exec($mssql, 'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\''.mssql_escape_string($_POST['reg_secret']).')');

Beim ersten fett gedruckten gibst du an welche Parameter du alles beschreiben willst.

Beim zweiten fett gedruckten gibst du die Werte ein.

Beispiel:

insert into tabelle (param1,param2) VALUES("wert1","wert2")

Wie du hierran erkennen kannst wird in die Tabelle "tabelle" geschrieben. Dort werden die Parameter "param1" und "param2" beschrieben.

param1 = wert1
param2 = wert2


Wichtig hierbei ist die reihenfolge. Ansonsten kann es passieren das einige werte in falsche spalten geschrieben werden.
Du hast jedoch nach email kein parameter mehr angegeben.
Adde da einfach den Namen deiner Column in die die geheimfrage geschrieben wird dann funzt es ;)

Außerdem hast du da ein komma vergessen (roter ebreich)

odbc_exec($mssql, 'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\''.mssql_escape_string($_POST['reg_secret']).')')
01/02/2013 02:49 Exribo#4
PHP Code:
odbc_exec($mssql'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email, Geheimantwort) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\''.mssql_escape_string($_POST['reg_secret']).')'); 
Wäre das richtig?

PS : Die Spalte in der Datenbank heißt Geheimantwort.
01/02/2013 03:24 yannick2008#5
PHP Code:
odbc_exec($mssql'INSERT INTO [dbo].[ACCOUNT_TBL_DETAIL] (account, gamecode, tester, m_chLoginAuthority, regdate, BlockTime, EndTime, WebTime, isuse, secession, email, Geheimantwort) VALUES (N\''.mssql_escape_string($_POST['reg_username']).'\', N\'A000\', N\'2\', N\'F\', \''.mssql_escape_string(date('Ymd H:i:s')).'\', N\'20010101\', N\'20990101\', N\'20050101\', N\'O\', NULL, N\''.mssql_escape_string($_POST['reg_email']).'\',N\''.mssql_escape_string($_POST['reg_secret']).'\')'); 
So müsste es funzeln.
01/02/2013 03:33 Exribo#6
Vielen Dank Yannick, es funzelt. :D

#closerequest
01/02/2013 17:22 Lumi#7
#closed