2013-12-19 1017 views
0

我正在使用PDO連接到運行在Azure中的Microsoft服務器,收到錯誤:運行查詢失敗:SQLSTATE [42000]:[Microsoft] [SQL Server Native Client 11.0] [SQL Server]''''附近的語法錯誤

這是(insertUser),我已經寫功能:

private function generateSalt() 
{ 
    return dechex(mt_rand(0, 4453456454)) . dechex(mt_rand(0, 543545435)); 
} 

private function hashPassword($originalPassword, $salt) 
{ 
    for($round = 0; $round < 65536; $round++) 
    { 
     $password = hash('sha256', $password . $salt); 
    } 

    return $password; 
} 

private function insertUser() 
{ 
    $salt = $this->generateSalt(); 
    $password = $this->hashPassword($_POST['password'], $salt); 

    $query = "INSERT INTO dbo.[User] 
          (Title , 
           FirstName , 
           MiddleName , 
           LastName , 
           Gender , 
           DOB , 
           Email , 
           Phone , 
           Mobile , 
           HomeAddress , 
           HomePostCode , 
           HomeSuburb , 
           HomeState , 
           HomeCountry , 
           BrowserDetails , 
           IsActive , 
           Password , 
           Salt , 
           LastLogin , 
           CompanyID , 
           Created , 
           CreatedBy , 
           LastModified , 
           LastModifiedBy , 
           Username , 
           UserRole 
          ) 
        VALUES (@title , -- Title - varchar(50) 
           @firstname , -- FirstName - varchar(100) 
           @middlename , -- MiddleName - varchar(100) 
           @lastname , -- LastName - varchar(100) 
           @gender , -- Gender - varchar(20) 
           @dob , -- DOB - datetime 
           @email , -- Email - varchar(200) 
           @phone , -- Phone - varchar(50) 
           @mobile , -- Mobile - varchar(50) 
           @homeaddress , -- HomeAddress - varchar(100) 
           @homepostcode , -- HomePostCode - varchar(10) 
           @homesuburb , -- HomeSuburb - varchar(50) 
           @homestate , -- HomeState - varchar(20) 
           @homecountry , -- HomeCountry - varchar(200) 
           @browserdetails , -- BrowserDetails - varchar(500) 
           1 , -- IsActive - bit 
           @password , -- Password - varchar(500) 
           @salt , -- Salt - varchar(50) 
           GETDATE() , -- LastLogin - datetime 
           @companyid , -- CompanyID - int 
           GETDATE() , -- Created - datetime 
           user , -- CreatedBy - varchar(50) 
           NULL , -- LastModified - datetime 
           NULL , -- LastModifiedBy - varchar(50) 
           @username , -- Username - varchar(50) 
           'user' -- UserRole - varchar(30) 
          )"; 

    $query_params = array(   ':title' => $_POST['title'] , 
            ':firstname' => $_POST['firstname'] , 
            ':middlename' => $_POST['middlename'] , 
            ':lastname' => $_POST['lastname'] , 
            ':gender' => $_POST['gender'] , 
            ':dob' => $_POST['dob'] , 
            ':email' => $_POST['email'] , 
            ':phone' => $_POST['phone'] , 
            ':mobile' => $_POST['mobile'] , 
            ':homeaddress' => $_POST['homeaddress'] , 
            ':homepostcode' => $_POST['homepostcode'] , 
            ':homesuburb' => $_POST['homesuburb'] , 
            ':homestate' => $_POST['homestate'] , 
            ':homecountry' => $_POST['homecountry'] , 
            ':browserdetails' => $_POST['browserdetails'] , 
            ':password' => $password , 
            ':salt' => $salt , 
            ':companyid' => $_POST['companyid'] , 
            ':username' => $_POST['username'] ); 

    try 
    { 
     $stmt = $this->db->prepare($query); 
     $result = $stmt->execute($query_params); 
    } 
    catch(PDOException $ex) 
    { 
     die("Failed to run query: " . $ex->getMessage()); 
    } 

    // display json encode on the page for AJAX to read 
    echo json_encode(array('error' , $result)); 
} 

我收到的錯誤是這樣的:

Failed to run query: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near ')'.

這是混淆了我的理由這麼多手動r在SQL Management Studio中使用我發送的發佈數據創建了查詢並且一切正常。我甚至嘗試創建一個臨時表,並插入,但我仍然沒有成功。幫幫我!

對於上下文中,這是後數據我試圖使用:

類別:1

  • 用戶名:[email protected]
  • companyemail :[email protected]
  • confirmEmail:[email protected]
  • 密碼:123
  • confirmPassword:123
  • 功能:registrationProcessCompany
  • 類別:工作場所
  • 標題:MS
  • 姓:貝弗利
  • 名字:山
  • 公司名稱:山公司
  • companysize:山公司
  • questdeptdiv:甲具體部門/部門
  • 公司地址:Hills Corp
  • companysuburb:山特公司
  • companypostcode:山特公司
  • companytype:信息媒體和電信
  • SportingGroupAge []:高級
  • statesportingbody:CA
  • QuestAction:吃健康,少飲
  • 來源:收音機
  • 而這是表設計:

    USE [junglegymSQL] GO 
    
    /****** Object: Table [dbo].[User] Script Date: 19/12/2013 8:28:32 PM ******/ SET ANSI_NULLS ON GO 
    
    SET QUOTED_IDENTIFIER ON GO 
    
    SET ANSI_PADDING ON GO 
    
    CREATE TABLE [dbo].[User](
        [UserId] [int] IDENTITY(1,1) NOT NULL, 
        [Title] [varchar](50) NULL,  
        [FirstName] [varchar](100) NOT NULL,  
        [MiddleName] [varchar](100) NULL, 
        [LastName] [varchar](100) NOT NULL,  
        [Gender] [varchar](20) NULL,  
        [DOB] [datetime] NULL, 
        [Email] [varchar](200) NOT NULL,  
        [Phone] [varchar](50) NULL,  
        [Mobile] [varchar](50) NULL,  
        [HomeAddress] [varchar](100) NULL, 
        [HomePostCode] [varchar](10) NULL, 
        [HomeSuburb] [varchar](50) NULL,  
        [HomeState] [varchar](20) NULL,  
        [HomeCountry] [varchar](200) NULL, 
        [BrowserDetails] [varchar](500) NULL, 
        [IsActive] [bit] NULL, 
        [Password] [varchar](500) NOT NULL,  
        [Salt] [varchar](50) NOT NULL, 
        [LastLogin] [datetime] NULL,  
        [CompanyID] [int] NULL,  
        [Created] [datetime] NULL, 
        [CreatedBy] [varchar](50) NULL,  
        [LastModified] [datetime] NULL,  
        [LastModifiedBy] [varchar](50) NULL,  
        [Username] [varchar](50) NOT NULL, 
        [UserRole] [varchar](30) NULL, 
    CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED (
    [UserId] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)) 
    
    GO 
    
    SET ANSI_PADDING OFF GO 
    
    ALTER TABLE [dbo].[User] ADD DEFAULT ('User') FOR [UserRole] GO 
    
    ALTER TABLE [dbo].[User] WITH CHECK ADD CONSTRAINT [FK_User_Company] FOREIGN KEY([CompanyID]) REFERENCES [dbo].[Company] ([CompanyID]) GO 
    
    ALTER TABLE [dbo].[User] CHECK CONSTRAINT [FK_User_Company] GO 
    
    +0

    你PDO的佔位符與* @ *,但在更換使用前綴一個**:**作爲前綴。 – Reflic

    回答

    0

    檢查單queted MAKS(')出現在sntax值好

    +0

    getdate後面的值用戶沒有引號,是一個變量嗎? –

    相關問題