2014-09-03 5 views
0

안녕하십니까, PHP를 사용하여 MSSQL에 데이터를 삽입하려고합니다. 문제가 무엇인지 파악하기 위해 여러 번 시도했지만 찾지 못하는 것 같습니다. 뭔가 잘못되었거나 없습니까?PHP를 사용하여 MSSQL DB에 데이터를 삽입하십시오.

<?php 
//pull form fields into php variables 
$no = $_POST['no']; 
$name= $_POST['name']; 
$date = $_POST['date']; 
$leave = $_POST['leave']; 
$days= $_POST['days']; 
$empno= $_POST['empno']; 

//connect to sql 
$dbc = mssql_connect('Server-PC','user','password','database')or die('Error connecting to 
     the SQL Server database.'); 

// Input into staff database 
    $query = "INSERT INTO dbo.[CAGD$Leave Plan] ([No_],[Employee No_],[Employee Name], 
[Leave Name], [Start Date],[Leave Days],Satus) VALUES 
('$no','$name','$leave','$date','days','empno')"; 
$r esult = mssql_query($query,$dbc)or die('Error querying MSSQL database'); 

//close to sql 
mssql_close($dbc); 

echo $name . 'Your submission has been received<br />'; 
echo 'If you need change this request please contact your HR Manager<br />'; 
echo 'Thank you <br />'; 
echo 'HR Manager'; 
?> 

는이 오류 메시지가 : 경고 : mssql_query() [function.mssql-쿼리] : 메시지 : 잘못된 개체 이름 'dbo.CAGD 계획'. C에서
(심각도 16) : \ XAMPP \ htdocs를 \ CAGD \ leave_request.php 라인 (110)

Warning: mssql_query() [function.mssql-query]: Query failed in C:\xampp\htdocs 
\CAGD\leave_request.php on line 110 
Error querying MSSQL database 
+1

당신이 오류를 받고 있습니까? – Hammerstein

+0

예 경고 : mssql_query() [function.mssql-query] : 메시지 : 잘못된 개체 이름 'dbo.CAGD 계획'. (심각도 16) C : \ xampp \ htdocs \ CAGD \ leave_request.php on line 110 경고 : mssql_query (function.mssql-query) : C : \ xampp \ htdocs \ CAGD \ leave_request.php에서 쿼리가 실패했습니다. 온라인 110 MSSQL 데이터베이스를 쿼리하는 중 오류가 발생했습니다 – user3315848

+2

변수가 $ leave가 아니라 $ leave이므로 CAGD4 Plan과 같은 경우 변수를 소문자로 변경하십시오 .PHP는 대소 문자를 구분합니다. – Hammerstein

답변

0

음에, 당신이 제출 한 테이블에서 7 개 필드 만 6 값이 나에게 것 -을 첫 번째 열 값인 [No_]이 누락되었습니다. 게다가, 마지막 열 satus (나는 '상태'여야한다고 가정)에는 [] 구분 기호가 없습니다. 반환 된 오류는 테이블의 이름이 잘못되었음을 알려줍니다. 그리고 yes 변수 이름은 PHP에서 대소 문자를 구분합니다. 문자열을 끝내고 연결하는 가장 좋은 방법은 $ leave입니다. "bla bla".$leave."anything here with spaces or not"과 같은 것을 사용하십시오. 먼저 데이터베이스 연결을 지정

3

...

mssql_connect('Server-PC','user','password','database') 
like -> "localhost","root","XXXX", "DBNAME" 

다음

$query = "INSERT INTO TABLENAME (id,name) VALUES 
('$id','$name')"; 
$result = mssql_query($query,$dbc) 
0

같은 쿼리는이 변수로되어 있습니까? 그 변수에 있어야했다 어떤 값이 아닙니다

$query = "INSERT INTO dbo.[CAGD$Leave Plan] ([No_],[Employee No 
           ^^^^^^ 

는 그렇다면, 분명히 코드에서 정의되지 않은, 그리고 생성 된 쿼리 문자열 dbo.[CAGD Plan]을 포함합니다. $이 문자 그대로 표 이름에 포함되는 경우 CAGD\$Leave이어야하며 $Leave은 변수로 처리되지 않습니다.

+0

dbo. [CAGD $ Leave Plan]은 테이블 이름이 – user3315848

+0

인 경우 PHP가'$ Leave'를 변수로 처리하지 않도록'$ '를 이스케이프 처리해야합니다. –

0

대신 MSSQL 드라이버의 SQLSRV 드라이버를 사용하고 그 다음이 더 유용이

<?php 
$serverName = "serverName"; 
$options = array( "UID" => "sa", "PWD" => "Password", "Database" => "DBname"); 
$conn = sqlsrv_connect($serverName, $options); 

if($conn === false) 
    { 
    echo "Could not connect.\n"; 
    die(print_r(sqlsrv_errors(), true)); 
    } 

$no = $_POST['no']; 
$name= $_POST['name']; 

$query = "INSERT INTO dbo.Test 
     (No_,FirstName) 
     VALUES(?, ?)"; 
$params1 = array($no,$name);      
$result = sqlsrv_query($conn,$query,$params1); 

sqlsrv_close($conn); 
?> 

을 시도, 당신은 여기에서 자세히 알아볼 수 있습니다 :

https://msdn.microsoft.com/en-us/library/cc626305(v=sql.105).aspx