2016-08-22 7 views
0

こんにちは、私のフォームからdboというテーブルにレコードを挿入しようとしています。[TABLE $ Leave Request]。私は提出しようとするとこのエラーが出ます。pdo sqlsrvを使ってレコードを挿入するときにエラーが発生する

Array ([0] => Array ([0] => 42S02 
         [SQLSTATE] => 42S02 
         [1] => 208 
         [code] => 208 
         [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'dbo.TABLE Request'. 
         [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'dbo.TABLE Request'.)) 

私のコード

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "leave")) { 
$sql = "INSERT INTO dbo.[TABLE$Leave Request] 
(dbo.[TABLE$Leave Request].id, 
dbo.[TABLE$Leave Request].emp_ID, 
dbo.[TABLE$Leave Request].leave_type, 
dbo.[TABLE$Leave Request].date_applied, 
dbo.[TABLE$Leave Request].leave_days, 
dbo.[TABLE$Leave Request].start_date, 
dbo.[TABLE$Leave Request].end_date, 
dbo.[TABLE$Leave Request].supervisor, 
dbo.[TABLE$Leave Request].leave_reason, 
dbo.[TABLE$Leave Request].[year], 
dbo.[TABLE$Leave Request].partner, 
dbo.[TABLE$Leave Request].phone) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"; 
$params = array($_POST[id], 
$_POST[empid], 
$_POST[leave_type], 
$_POST[date_applied], 
$_POST[leave_days], 
$_POST[start_date], 
$_POST[end_date], 
$_POST[supervisor], 
$_POST[leave_reason], 
$_POST[year], 
$_POST[partner], 
$_POST[phone]); 

$ins = sqlsrv_query($conn, $sql, $params); 
if($ins === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

} 

答えて

3

Double-quoted strings perform variable interpolation in PHP。 PHPはあなたの文字列に(おそらく存在しない)変数$Leaveの値を挿入しようとします。代わりに

使用単一引用符:また

$sql = 'INSERT INTO dbo.[TABLE$Leave Request] 
     (dbo.[TABLE$Leave Request].id, 
     ...'; 

は、\であなたの$文字、すなわちTABLE\$Leaveを逃れます。

+1

実際にエラーメッセージを読むことは、OPにヒントを与えたはずです – WillardSolutions

1

エラーメッセージはすでにそれを言う:

無効なオブジェクト名 'dbo.TABLEリクエスト'。

あなたのコード

$sql = "INSERT INTO dbo.[TABLE$Leave Request] 

にこれを比較すると、あなたがTABLE Requestを与えて、空の文字列に置き換えられ$Leaveを参照してください。

関連する問題