2013-09-02 6 views
6

Używam bazy danych SQL server2008 i zapisałem procedurę przechowywaną w MSSQL Server 2008. Działa dobrze w MSSQL Server 2008. Chcę nazwać tę procedurę przechowywaną od codeigniter. W tym pisałem kod tak:Pobierz dane z procedury zapisanej przy użyciu sterownika 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(); 

} 

kiedy Wykonaj procedury bez parametrze działa dobrze

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

     return $query->result(); 

    } 

Ale Kiedy Wykonaj procedurę z parametrem nie działa

ktoś może mi powiedzieć co ja tu brakuje?

góry dzięki

+0

to może pomóc http://ellislab.com/forums/viewthread/202515/ –

+0

@Deepanshu: ja nie dostaję z tego linku. Możesz mi wytłumaczyć ? –

+1

Czy próbowałeś używać powiązanych parametrów? '$ this-> db-> query (" Exec Login?,? ", array ($ UserName, $ Password));" To zapobiegnie błędom, jeśli hasło zawiera znak cudzysłowu. – mcrumley

Odpowiedz

0

oh .............. po długim RND mam 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

Przede wszystkim, jeśli używasz CodeIgniter, polecam skorzystać z ich klasy bazy danych, aby połączyć się MSSQL Server. Możesz przeczytać więcej na ten temat tutaj: http://ellislab.com/codeigniter/user-guide/database/configuration.html

Jeśli nie automatycznego łączenia się z bazą danych można podłączyć tak: $this->load->database('default');

Gdy masz konfigurację konfiguracji, można mieć funkcję takiego w model:

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

Błąd krytyczny: wywołanie funkcji funkcji result() na nie-obiekt w \ apimodel.php na linii 87 ... $ query = $ this-> db-> query ("EXEC Common_Login ($ username, $ password)"); –

+0

Wygląda na to, że nadal nie używasz klas bazy danych CI. Zapoznaj się z nim i modelami: http://ellislab.com/codeigniter/user-guide/database/index.html i http://ellislab.com/codeigniter/user-guide/general/models.html. I upewnij się, że zawierasz ciągi znaków w pojedynczych cudzysłowach. – mcryan

+0

Gdy wykonuję procedurę Execute bez parametru, to działa poprawnie, ale z parametrem, który nie działa poprawnie –

Powiązane problemy