2016-08-22 46 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] 

你看$Leave,這是一個空字符串替換,給人TABLE Request