2013-09-02 34 views
6

Tôi đang sử dụng SQL server2008 làm cơ sở dữ liệu và tôi đã viết thủ tục lưu sẵn trong MSSQL Server 2008. Nó hoạt động tốt trong MSSQL Server 2008. Tôi muốn gọi thủ tục lưu trữ này từ codeigniter. Cho rằng tôi đã viết code như thế này:Lấy dữ liệu từ quy trình được lưu trữ Sử dụng trình điều khiển Sqlsrv

phpService.php:

public function Login($username, $password) 
{ 
    $this->load->model('Apimodel'); 
    $result = $this->Apimodel->Login($username,$password); 

    header('Content-type: application/json'); 
    echo json_encode(array('LoginResponce'=>$result)); 
} 

apimodel.php:

function Login($UserName,$Password) 
{    
    $this->db = $this->GetDB(); 
    $query = $this->db->query("EXEC Login"); 

    return $query->result(); 

} 

khi tôi Execute Thủ tục mà không cần tham số nó làm việc Fine

function Login($UserName,$Password) 
    {    
     $this->db = $this->GetDB(); 
     $query = $this->db->query("EXEC Login '$UserName','$Password'"); 

     return $query->result(); 

    } 

Nhưng, Khi tôi Execute Thủ tục với tham số nó không làm việc

bất cứ ai có thể cho tôi biết tôi đang thiếu gì ở đây?

Cảm ơn trước

+0

này có thể giúp http://ellislab.com/forums/viewthread/202515/ –

+0

@Deepanshu: tôi không nhận được từ liên kết này. bạn có thể giải thích cho tôi ? –

+1

Bạn đã thử sử dụng các thông số bị ràng buộc chưa? '$ this-> db-> query (" Exec Login?,? ", mảng ($ UserName, $ Password));' Điều đó sẽ ngăn chặn lỗi nếu mật khẩu có ký tự trích dẫn trong đó. – mcrumley

Trả lời

0

oh .............. sau RND lâu tôi nhận được ans

PhpService.php:

public function Login($username, $password) 
    { 

     $this->load->model('Apimodel'); 
     $result = $this->Apimodel->Login($username,$password); 

     header('Content-type: application/json'); 
     echo json_encode(array('LoginResponce'=>$result)); 

    } 

apimodel.php:

function Login($username, $password) 
    { 
     $this->db = $this->GetDB(); 
     $query = $this->db->query("EXEC Login $username,$password"); 

     return $query->result(); 
    } 
1

Trước hết, nếu bạn đang sử dụng CodeIgniter, tôi khuyên bạn nên sử dụng lớp cơ sở dữ liệu của họ để kết nối với MSSQL Server. Bạn có thể đọc thêm về vấn đề này ở đây: http://ellislab.com/codeigniter/user-guide/database/configuration.html

Nếu bạn không tự động kết nối với cơ sở dữ liệu của bạn, bạn có thể kết nối như thế này: $this->load->database('default');

Một khi bạn đã thiết lập cấu hình của bạn, bạn có thể có một chức năng như thế này trong mô hình của bạn:

function login($username, $password) { 
    return $this->db->query("EXEC spLogin '$username', '$password'")->result(); 
} 
+0

Lỗi nghiêm trọng: Gọi tới kết quả hàm() trên một đối tượng không phải trong \ apimodel.php trên dòng 87 ... $ query = $ this-> db-> query ("EXEC Common_Login ($ username, $ password)"); –

+0

Có vẻ như bạn vẫn không sử dụng các lớp cơ sở dữ liệu của CI. Hãy chắc chắn rằng bạn đọc trên nó và các mô hình: http://ellislab.com/codeigniter/user-guide/database/index.html và http://ellislab.com/codeigniter/user-guide/general/models.html. Và chắc chắn rằng bạn gửi kèm theo các chuỗi của bạn trong dấu nháy đơn. – mcryan

+0

Khi tôi thực hiện thủ tục mà không có tham số thì nó sẽ hoạt động tốt nhưng với tham số nó không hoạt động đúng –

Các vấn đề liên quan