테스트 사이트 - 개발 중인 베타 버전입니다

프로시저 사용법좀 알려주십시오

· 11년 전 · 795 · 2
php에서 asp프로시저에 연결하려하는데 도무지 해결이 안됩니다. 

아래는 샘플입니다. 

$key1 xml 형식으로 처리하는 구문입니다. 
$key2 ''처리에 문제가 있나 싶은데 구글링해봐도 잘모르겠네요 

mssql_execute($stmt); 오류가 납니다. 
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in 


$Key1="N'<ROOT> 
<DataBlock></DataBlock> 
</ROOT>'"; 
$Key2="N''"; 



디비에서 직접 아래와 같이 쿼리를 하면 정상적입니다. 

exec 프로시저명 @Key1=N'<ROOT> 
<DataBlock></DataBlock> 
</ROOT>',@Key2=N'',@Key3=1


아래는 전체 소스입니다.

<?php 
$hostName=""; 
$userName=""; //mssql id 
$password="";//mssql pass 
$dbName="";//mssql db 


$conn=mssql_connect($hostName,$userName,$password); 

if ($conn) { 
    mssql_select_db($dbName,$conn); 
    $stmt=mssql_init("프로시저명",$conn);//프로시저명 
    
   $Key1="N'<ROOT>
<DataBlock1></DataBlock1>
</ROOT>'";
   $Key2="N''";
   $Key3=1;

    mssql_bind($stmt,"@Key1",$Key1,SQLVARCHAR); 
    mssql_bind($stmt,"@Key2",$Key2,SQLVARCHAR); 
    mssql_bind($stmt,"@Key3",$Key3,SQLINT2); 


    
    $result=mssql_execute($stmt); 
    $arr=mssql_fetch_row($result); 

echo"$arr[Key1]"; 
    
    mssql_close($conn); 
}else{echo"연결실패";} 
?> 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 2개

11년 전
우선 phpinfo() 이용하여 mssql 확장되어 있는지 확인 해봐야합니다.
없으면 패치확장하구요 현재 위 방식 보니 php4 혹은 php5 최신 버전 아닌것 같습니다.
php5라면 pdo 추천합니다.
모든 sql 명령어 바뀌지 않은 상태에서 다양한 디비로 쉽께 바꿀수있습니다.
답변 감사합니다.
mssql 확장 확인했습니다.
실 디비에서 데이타를 가져오는것도 처리했구요... 프로시저쪽 접근하는게 에러가 나는상황입니다.
pdo쪽은 안해봤는데 찾아봐야겠네요

게시글 목록

번호 제목
32341
32339
32326
32325
32322
32319
32318
32316
32315
32313
32312
32311
32310
32304
32303
32300
32293
32292
32291
32285
32284
32275
32271
32268
32265
32261
32258
32257
32255
32254
32253
32251
32250
32249
32247
32246
32245
32244
32243
32242
32241
32240
32239
32238
32237
32236
32232
32229
32228
32227
32217
32215
32214
32213
32211
32207
32196
32193
32192
32190
32188
32186
32184
32173
32172
32171
32167
32165
32163
32162
32158
32157
32155
32151
32149
32135
32132
32127
32125
32122
32120
32119
32117
32116
32115
32114
32112
32111
32109
32107
32104
32103
32102
32101
32094
32089
20404
31036
8279
8268